标签: ef-code-first

如何在MVC3中使用Code First Entity Framework(4.1)声明外键关系?

我一直在寻找有关如何使用代码首先EF 4.1声明外键关系和其他约束的资源,而没有太多运气.基本上我是在代码中构建数据模型并使用MVC3来查询该模型.一切都通过MVC工作,这是伟大的(对微软的赞誉!)但现在我希望它不工作,因为我需要有数据模型约束.

例如,我有一个Order对象,它有很多属性是外部对象(表).现在我可以创建一个没有问题的订单,但是无法添加外键或外部对象.MVC3设置这没问题.

我意识到我可以在保存之前在控制器类中自己添加对象,但是如果没有满足约束关系,我希望调用DbContext.SaveChanges()失败.

新的消息

所以,具体来说,当我尝试保存Order对象而不指定客户对象时,我希望发生异常.如果我只是编写大多数Code First EF文档中描述的对象,这似乎不是行为.

最新代码:

public class Order
{
    public int Id { get; set; }

    [ForeignKey( "Parent" )]
    public Patient Patient { get; set; }

    [ForeignKey("CertificationPeriod")]
    public CertificationPeriod CertificationPeriod { get; set; }

    [ForeignKey("Agency")]
    public Agency Agency { get; set; }

    [ForeignKey("Diagnosis")]
    public Diagnosis PrimaryDiagnosis { get; set; }

    [ForeignKey("OrderApprovalStatus")]
    public OrderApprovalStatus ApprovalStatus { get; set; }

    [ForeignKey("User")]
    public User User { get; set; }

    [ForeignKey("User")]
    public User Submitter { get; set; }

    public DateTime …
Run Code Online (Sandbox Code Playgroud)

ef-code-first entity-framework-4.1 asp.net-mvc-3

99
推荐指数
2
解决办法
15万
查看次数

实体框架代码 - 首先是null外键

我有一个User< Country模特.用户属于某个国家/地区,但可能不属于任何(空外键).

我该如何设置?当我尝试插入具有空国家/地区的用户时,它告诉我它不能为空.

模型如下:

 public class User{
    public int CountryId { get; set; }
    public Country Country { get; set; }
}

public class Country{
    public List<User> Users {get; set;}
    public int CountryId {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

错误: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}

mapping entity-framework foreign-key-relationship ef-code-first entity-framework-4.1

98
推荐指数
3
解决办法
8万
查看次数

实体框架中的ICollection <T> Vs List <T>

在我首先设计一些Entity Framework应用程序之前,我只看了几个网络广播.我真的没有阅读那么多文档,我觉得我现在正在为此而痛苦.

我一直List<T>在我的课堂上使用,而且效果很好.

现在我已经阅读了一些文档,并说它应该一直在使用ICollection<T>.我改为这个,它甚至没有导致模型上下文改变.这是因为兼并List<T>ICollection<T>继承IEnumerable<T>,这是EF实际需要的吗?

但是,如果是这种情况,为什么EF文档没有声明它需要IEnumerable<T>而不是ICollection<T>

在任何情况下,我做了什么都有任何缺点,或者我应该改变它?

c# ienumerable list icollection ef-code-first

98
推荐指数
4
解决办法
6万
查看次数

EntityType'IdentityUserLogin'没有定义键.定义此EntityType的键

我正在使用Entity Framework Code First和MVC 5.当我使用个人用户帐户身份验证创建我的应用程序时,我获得了一个帐户控制器以及所有必需的类和代码,以使Indiv用户帐户身份验证工作.

已经存在的代码包括:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext() : base("DXContext", throwIfV1Schema: false)
    {

    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}
Run Code Online (Sandbox Code Playgroud)

但后来我继续使用代码创建了我自己的上下文,所以我现在也有以下内容:

public class DXContext : DbContext
{
    public DXContext() : base("DXContext")
    {

    }

    public DbSet<ApplicationUser> Users { get; set; }
    public DbSet<IdentityRole> Roles { get; set; }
    public DbSet<Artist> Artists { get; set; }
    public DbSet<Paintings> Paintings { get; set; }        
}
Run Code Online (Sandbox Code Playgroud)

最后,我有以下种子方法为我添加一些数据,同时开发:

protected override void Seed(DXContext context) …
Run Code Online (Sandbox Code Playgroud)

seeding ef-code-first asp.net-mvc-5

98
推荐指数
4
解决办法
10万
查看次数

EF 6和Code First迁移中相同数据库和应用程序中的多个DB上下文

我是Entity Framework的新手.我正在尝试设置一个使用EF 6的MVC应用程序.我正在使用Code First Migrations.我在应用程序中使用区域,并希望在每个区域中有不同的DbContexts来分解它.我知道EF 6有ContextKey,但我找不到有关如何使用它的完整信息.目前,我一次只能使用一个上下文.

有人可以给出一个足够详细的例子,让我有一个像EF一样的新人来理解和使用.

asp.net-mvc entity-framework ef-code-first ef-migrations

91
推荐指数
1
解决办法
5万
查看次数

Entity Framework迁移中必填字段的默认值?

我已经将[Required]数据注释添加到ASP.NET MVC应用程序中的一个模型中.创建迁移后,运行该Update-Database命令会导致以下错误:

无法将值NULL插入列'Director',表'MOVIES_cf7bad808fa94f89afa2e5dae1161e78.dbo.Movies'; 列不允许空值.更新失败.该语句已终止.

这是因为某些记录的Director列中包含NULL .如何自动将这些值更改为默认值(例如"John Doe")导演?

这是我的模型:

  public class Movie
    {
        public int ID { get; set; }
        [Required]
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }

        [Required]
        public string Genre { get; set; }

        [Range(1,100)]
        [DataType(DataType.Currency)]
        public decimal Price { get; set; }

        [StringLength(5)]
        public string Rating { get; set; }

        [Required]     /// <--- NEW
        public string Director { get; set; }
    } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework ef-code-first

87
推荐指数
5
解决办法
7万
查看次数

如何使用Entity Framework Code First CTP 5存储图像?

我只想弄清楚是否有一种使用EF Code First CTP 5存储和检索二进制(文件)数据的简单方法?我真的希望它使用FILESTREAM类型,但我真的只是想找到一些方法来使它工作.

.net entity-framework sql-server-2008 ef-code-first

83
推荐指数
3
解决办法
7万
查看次数

实体框架查询速度慢,但SqlQuery中的SQL速度相同

我看到一些与使用.NET框架版本4的Entity Framework Code-First的非常简单的查询相关的一些非常奇怪的性能.LINQ2Entities查询如下所示:

 context.MyTables.Where(m => m.SomeStringProp == stringVar);
Run Code Online (Sandbox Code Playgroud)

这需要超过3000毫秒才能执行.生成的SQL看起来非常简单:

 SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
 ...
 FROM [MyTable] as [Extent1]
 WHERE [Extent1].[SomeStringProp] = '1234567890'
Run Code Online (Sandbox Code Playgroud)

在通过Management Studio运行时,此查询几乎立即运行.当我更改C#代码以使用SqlQuery函数时,它在5-10毫秒内运行:

 context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Run Code Online (Sandbox Code Playgroud)

因此,完全相同的SQL,在两种情况下都会对结果实体进行更改跟踪,但两者之间存在差异.是什么赋予了?

performance entity-framework ef-code-first

83
推荐指数
3
解决办法
5万
查看次数

应用程序配置文件中的连接字符串"MyConnection"不包含必需的providerName属性."

我用Entity Framework Code First,

我的连接字符串位于配置文件中:

<connectionStrings>
    <clear/>
    <add name="ApplicationServices" connectionString="Data Source=PC-X;Initial Catalog=MYdb;Integrated Security=True"/>
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问数据(应该创建数据库的东西)时,会出现以下错误:

<connectionStrings>
    <clear/>
    <add name="ApplicationServices" connectionString="Data Source=PC-X;Initial Catalog=MYdb;Integrated Security=True"/>
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

entity-framework connection-string ef-code-first

81
推荐指数
2
解决办法
5万
查看次数

复合键作为外键

我在MVC 3应用程序中使用Entity framework 4.1.我有一个实体,我有主键由两列(复合键)组成.并且这在另一个实体中用作外键.如何建立关系?在普通的scnerios我们使用:

public class Category
{
    public string CategoryId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public string CategoryId { get; set; }

    public virtual Category Category { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

但是如果类别有两列键怎么办?

c# entity-framework foreign-keys composite-key ef-code-first

80
推荐指数
2
解决办法
7万
查看次数