LINQ to SQL on Windows Phone 7.5: Listing 2.
The Review table.
- By Nick Randolph
- 10/01/2011
[Table]
public class Review : INotifyPropertyChanging {
private string comment;
private int movieId;
private EntityRef<Movie> movie;
[Column(IsPrimaryKey = true,
IsDbGenerated = true,
DbType = "INT NOT NULL Identity",
CanBeNull = false,
AutoSync = AutoSync.OnInsert)]
public int ReviewId { get; set; }
[Column]
public string Comment {
get { return comment; }
set {
if (comment == value) return;
comment = value;
NotifyPropertyChanging("Comment");
}
}
[Column]
public int MovieId {
get { return movieId; }
set {
if (movieId == value) return;
movieId = value;
NotifyPropertyChanging("MovieId");
}
}
[Association(Storage = "movie", ThisKey = "MovieId", OtherKey =
"MovieId", IsForeignKey = true)]
public Movie Movie {
get { return movie.Entity; }
set {
Movie previousValue = this.movie.Entity;
if (((previousValue != value)
|| (movie.HasLoadedOrAssignedValue == false))) {
NotifyPropertyChanging("Movie");
if ((previousValue != null)) {
movie.Entity = null;
previousValue.Reviews.Remove(this);
}
movie.Entity = value;
if ((value != null)) {
value.Reviews.Add(this);
movieId = value.MovieId;
}
else {
movieId = default(int);
}
}
}
}
public event PropertyChangingEventHandler PropertyChanging;
private void NotifyPropertyChanging(string propertyName) {
if (PropertyChanging != null) {
PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
}
}
}
About the Author
Nick Randolph runs Built to Roam, a consulting company that specializes in training, mentoring and assisting other companies build mobile applications. With a heritage in rich client applications for both the desktop and a variety of mobile platforms, Nick currently presents, writes and educates on the Windows Phone platform.