私は Web フォームの世界から来て、コード ファーストのアプローチで MVC4 と Entity Framework 5 を学んでいます。EFコードファーストを使用するのはこれが初めてで、データベースを作成/更新できるようにするためにEFが必要とするものを理解するのに苦労しています。
RESTful サービスにリクエストを送信し、レスポンスをDataContract
. DataContract
理想的には、これをデータベースに挿入できるようにしたいのですが、DbContext
からクラスを生成する方法がわからないDataContract
ので、EF でそれを行うことができます。
の簡易版DataContract
...
[DataContract]
public class MoviesDataContract {
[DataMember(Name = "total")]
public int Total { get; set; }
[DataMember(Name = "movies")]
public IEnumerable<Movie> Movies { get; set; }
[DataMember(Name = "link_template")]
public string LinkTemplate { get; set; }
}
[DataContract]
public class Movie {
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "title")]
public string Title { get; set; }
[IgnoreDataMember]
public int? Year {
get {
int i;
return int.TryParse(_year, out i) ? i : (int?)null;
}
set { _year = value.ToString(); }
}
[DataMember(Name = "year")]
private string _year { get; set; }
}
使用例はこちらDataContract
...
using(var response = (HttpWebResponse)request.GetResponse()) {
var serializer = new DataContractJsonSerializer(typeof (MoviesDataContract));
var dataContract = (MoviesDataContract)serializer.ReadObject(response.GetResponseStream());
var model = new List<MovieViewModel>();
dataContract.Movies.ToList().ForEach(movie => model.Add(new MovieViewModel {
Title = movie.Title,
Year = movie.Year
}));
// MovieDbContext doesn't exist and it's what I'm unsure of how to generate
// I would think it would work something like this though (once created)
var db = new MovieDbContext();
db.Add(dataContext);
db.SaveChanges();
return View(model);
}
私の質問は...
DbContext
my からクラスを生成する方法はありますか、DataContract
それとも手動で作成する必要がありますか?- Entity Framework (特に EF5) で逆シリアル化されたデータを使用する (または実際に db に保存する) ためのより良いアプローチはありますか?
- DataContract と組み合わせて使用されている EF (4 以上) について説明するリンクを誰かが提供できますか? EF5 を効果的に使用する方法を完全に把握していない可能性があると思います。