Questions tagged «ef-code-first»

EF Code-First是将Microsoft的Entity Framework与POCO类一起使用的一种方式,与模型优先或DB-first相对。

14
如何使用DbContext和SetInitializer解决datetime2超出范围的转换错误?
我正在使用Entity Framework 4.1引入的DbContext和Code First API。 该数据模型使用的基本数据类型,如string和DateTime。在某些情况下[Required],我使用的唯一数据注释是,但这不在任何DateTime属性上。例: public virtual DateTime Start { get; set; } 该的DbContext子类也很简单,看起来像: public class EventsContext : DbContext { public DbSet<Event> Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Event>().ToTable("Events"); } } 在初始化设置日期在模型中有意义的值在今年或明年。 但是,当我运行初始化程序时,在以下位置出现此错误context.SaveChanges(): 从datetime2数据类型到datetime数据类型的转换导致值超出范围。该语句已终止。 我根本不明白为什么会这样,因为一切都很简单。我也不确定如何解决它,因为没有edmx文件可以编辑。 有任何想法吗?

25
数据库中已经有一个命名的对象
从程序包管理器控制台更新数据库失败。我使用了Entity Framework 6.x和代码优先方法。错误是 “数据库中已经有一个名为“ AboutUs”的对象。” 我怎么解决这个问题? internal sealed class Configuration : DbMigrationsConfiguration<Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = false; } protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context) { } } 我的DbContext是: public class JahanBlogDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim> { public JahanBlogDbContext() : base("name=JahanBlogDbConnectionString") { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<JahanBlogDbContext>()); …

4
实体框架中的ICollection <T>与List <T>
在开始设计一些Entity Framework应用程序之前,我仅观看了一些网络广播。我确实没有读那么多文档,所以我现在为此感到痛苦。 我List&lt;T&gt;在课堂上一直在使用,效果很好。 现在,我已经阅读了一些文档,并指出我应该一直在使用ICollection&lt;T&gt;。我改成了这个,它甚至没有引起模型上下文的改变。这是因为List&lt;T&gt;和ICollection&lt;T&gt;都继承了IEnumerable&lt;T&gt;,而这正是EF实际需要的吗? 但是,如果是这种情况,为什么EF文档没有声明它需要它IEnumerable&lt;T&gt;而不是ICollection&lt;T&gt;? 无论如何,我做过的事情有什么弊端,还是我应该改变它?


26
无法将术语“ Update-Database”识别为cmdlet的名称
我正在使用EF5 beta1,并且之前可以运行“ Update-Database”。现在,我关闭了Visual Studio,现在无法运行它了。我收到以下错误: 术语“ Update-Database”不能识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。在第1行:16个字符:+ Update-Database &lt;&lt;&lt;&lt; -verbose + CategoryInfo:ObjectNotFound:(Update-Database:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException 我尝试重新安装EF5b1,并且成功安装(已安装)后,“ Update-Database”仍然无法正常工作。 谁能帮忙???

4
实体框架代码优先的空外键
我有一个User&lt; Country模型。用户属于一个国家,但可能不属于任何国家(空外键)。 我该如何设置?当我尝试插入一个国家/地区为空的用户时,它告诉我不能为空。 该模型如下: public class User{ public int CountryId { get; set; } public Country Country { get; set; } } public class Country{ public List&lt;User&gt; Users {get; set;} public int CountryId {get; set;} } 错误: A foreign key value cannot be inserted because a corresponding primary key value …

6
EntityType'IdentityUserLogin'没有定义键。定义此EntityType的键
我正在使用Entity Framework Code First和MVC5。使用个人用户帐户身份验证创建我的应用程序时,我被赋予了一个帐户控制器,并与之一起获得Indiv用户帐户身份验证才能正常工作的所有必需的类和代码。 。 其中已经存在的代码如下: public class ApplicationDbContext : IdentityDbContext&lt;ApplicationUser&gt; { public ApplicationDbContext() : base("DXContext", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } } 但是后来我继续使用代码先创建了自己的上下文,因此现在也有了以下内容: public class DXContext : DbContext { public DXContext() : base("DXContext") { } public DbSet&lt;ApplicationUser&gt; Users { get; set; } …

2
EF 4.1代码优先的复合密钥
我试图弄清楚如何使用EF代码First 4.1 RC来组合键。 当前,我正在使用[Key]数据注释,但是我不能指定多个键。 如何指定组合键? 这是我的示例: public class ActivityType { [Key] public int ActivityID { get; set; } [Required(ErrorMessage = "A ActivityName is required")] [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")] public string ActivityName { get; set; } } 我还需要“ ActivityName”作为键。当然,我可以对此编码,但是那不是好的数据库设计。

2
我应该如何在MVC3中使用代码优先实体框架(4.1)声明外键关系?
我一直在寻找有关如何使用代码优先EF 4.1声明外键关系和其他约束的资源,但运气不佳。基本上,我正在代码中构建数据模型,并使用MVC3查询该模型。一切都可以通过MVC来完成,这很棒(对Microsoft很赞!),但是现在我希望它不起作用,因为我需要数据模型约束。 例如,我有一个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 …

1
同一数据库中的多个数据库上下文和EF 6中的应用程序以及代码优先迁移
我是实体框架的新手。我正在尝试设置使用EF 6的MVC应用程序。我正在使用代码优先迁移。我在应用程序中使用Areas,并且希望每个区域中都有不同的DbContext来分解它。我知道EF 6具有ContextKey,但是我找不到有关如何使用它的完整信息。目前,我一次只能使用一个上下文的迁移。 有人可以提供一个足够详细的示例,让像我这样的EF新手了解和使用。

6
实体框架查询速度很慢,但是SqlQuery中的相同SQL速度很快
我看到一些非常奇怪的性能,它们与使用.NET Framework版本4的Entity Framework Code-First进行的非常简单的查询有关。LINQ2Entities查询如下所示: context.MyTables.Where(m =&gt; m.SomeStringProp == stringVar); 这将花费3000毫秒以上的时间来执行。生成的SQL看起来非常简单: SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp], ... FROM [MyTable] as [Extent1] WHERE [Extent1].[SomeStringProp] = '1234567890' 通过Management Studio运行时,该查询几乎立即运行。当我更改C#代码以使用SqlQuery函数时,它将在5到10毫秒内运行: context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar); 因此,使用完全相同的SQL,在两种情况下,生成的实体都会进行更改跟踪,但是两者之间的性能差异很大。是什么赋予了?

8
实体框架迁移中必填字段的默认值?
我已经将[Required]数据注释添加到ASP.NET MVC应用程序中的其中一个模型中。创建迁移后,运行Update-Database命令将导致以下错误: 无法将值NULL插入表'MOVIES_cf7bad808fa94f89afa2e5dae1161e78.dbo.Movies'的“ Director”列中;列不允许为空。更新失败。该语句已终止。 这是由于某些记录的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 { …

6
EF代码第一个没有导航属性的外键
假设我有以下实体: public class Parent { public int Id { get; set; } } public class Child { public int Id { get; set; } public int ParentId { get; set; } } 什么是代码首先有效的API语法,以强制在数据库中创建ParentId并具有对Parents表的外键约束,而无需具有导航属性? 我知道,如果我将导航属性“父级”添加到“子级”,则可以执行以下操作: modelBuilder.Entity&lt;Child&gt;() .HasRequired&lt;Parent&gt;(c =&gt; c.Parent) .WithMany() .HasForeignKey(c =&gt; c.ParentId); 但在这种情况下,我不希望导航属性。

2
复合键作为外键
我在MVC 3应用程序中使用Entity Framework 4.1。我有一个实体,我的主键由两列组成(复合键)。这在另一个实体中用作外键。如何建立关系?在普通的scnerios中,我们使用: public class Category { public string CategoryId { get; set; } public string Name { get; set; } public virtual ICollection&lt;Product&gt; Products { get; set; } } public class Product { public int ProductId { get; set; } public string Name { get; set; } public …

4
应用程序的配置文件中的连接字符串'MyConnection'不包含必需的providerName属性。”
我用Entity Framework Code First, 我的连接字符串在配置文件中: &lt;connectionStrings&gt; &lt;clear/&gt; &lt;add name="ApplicationServices" connectionString="Data Source=PC-X;Initial Catalog=MYdb;Integrated Security=True"/&gt; &lt;/connectionStrings&gt; 当我尝试访问数据(应该创建数据库的东西)时,出现以下错误: 应用程序的配置文件中的连接字符串'ApplicationServices'不包含必需的providerName属性。” 我想念什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.