1

私は 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);
}

私の質問は...

  1. DbContextmy からクラスを生成する方法はありますか、DataContractそれとも手動で作成する必要がありますか?
  2. Entity Framework (特に EF5) で逆シリアル化されたデータを使用する (または実際に db に保存する) ためのより良いアプローチはありますか?
  3. DataContract と組み合わせて使用​​されている EF (4 以上) について説明するリンクを誰かが提供できますか? EF5 を効果的に使用する方法を完全に把握していない可能性があると思います。
4

1 に答える 1

3

通常のコード ファースト プロジェクトを開始するときと同じように、データ コントラクトを DBSet にフィードしようとしましたか?

public class ProductContext : DbContext

{

    public DbSet<Category> Categories { get; set; }

    public DbSet<Product> Products { get; set; }

}

EF は既存の属性を無視し、いくつかのエンティティを作成する必要があります。

DataContext を使用する方法の良い例については、この記事を参照してください: http://msdn.microsoft.com/en-us/jj729737

EF は初めてなので、ここから始めることもできます: http://msdn.microsoft.com/en-us/ee712907

于 2012-10-27T04:47:07.833 に答える