C# 如何将实体框架5(CodeFirst)与REST服务中的DataContract一起使用

C# 如何将实体框架5(CodeFirst)与REST服务中的DataContract一起使用,c#,entity-framework,rest,ef-code-first,C#,Entity Framework,Rest,Ef Code First,我来自web表单世界,我正在使用代码优先的方法学习MVC4和实体框架5。这是我第一次先使用EF代码,我很难理解EF需要我做什么才能创建/更新数据库 我正在向RESTful服务发出请求,并将响应反序列化为一个DataContract。理想情况下,我希望能够将这个DataContract插入到数据库中,但我不确定如何从DataContract生成DbContext类,以便EF能够完成这项工作 数据合同的简化版本 [DataContract] public class MoviesDataContra

我来自web表单世界,我正在使用代码优先的方法学习MVC4和实体框架5。这是我第一次先使用EF代码,我很难理解EF需要我做什么才能创建/更新数据库

我正在向RESTful服务发出请求,并将响应反序列化为一个
DataContract
。理想情况下,我希望能够将这个
DataContract
插入到数据库中,但我不确定如何从
DataContract
生成
DbContext
类,以便EF能够完成这项工作

数据合同的简化版本

[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
    生成
    DbContext
    类,或者我需要手动创建它们
  • 有没有更好的方法使用实体框架(尤其是EF5)的反序列化数据(或将其保存到数据库)
  • 有人能提供一个链接来讨论与DataContract一起使用的EF(4或更高版本)吗?我想我可能还没有完全掌握如何有效地使用EF5

  • 您是否尝试过像启动普通代码优先项目时那样将数据契约提供给DBSet

    public class ProductContext : DbContext
    
    {
    
        public DbSet<Category> Categories { get; set; }
    
        public DbSet<Product> Products { get; set; }
    
    }
    
    公共类ProductContext:DbContext
    {
    公共数据库集类别{get;set;}
    公共数据库集产品{get;set;}
    }
    
    EF应该忽略现有属性并创建一些实体

    有关如何使用DataContext的示例,请参阅本文:


    既然你是EF的新手,不妨从这里开始:

    这太完美了,谢谢你的链接,它们正是我想要的:)
    public class ProductContext : DbContext
    
    {
    
        public DbSet<Category> Categories { get; set; }
    
        public DbSet<Product> Products { get; set; }
    
    }