Tag: ef code first

在Entity Framework中动态创建DbSet ?

在LINQ to SQL中,我可以使用DataContext.GetTable动态创建存储库。 除了在特定的DbContext上声明属性之外,是否有类似的方法在Entity Framework 4中执行此DbContext ? 例如: public MyDbContext: DbContext { public DbSet MySets {get; set;} } 我想知道如何动态创建/获取对MySets的引用,就像我在LINQ to SQL中一样: var mySet = MyDbContext.GetTable();

entity framework4:代码优先 – 在另一个模式中创建数据库? MapSingleType?

我有一个数据库,我使用2种不同的模式。 模式就像名称空间(如果我错了,请纠正我)。 这样我有1个db和当前2个模式…所以1个模式中的表可以与其他模式中的表命名相同,因为它们位于不同的模式中。 如何让EF Code首先与不同的模式进行通信而不是默认模式? 是否与MapSingleType和覆盖方法有关,或者我可以做其他事情吗? 任何帮助真的很感激。

HOWTO:带有EntityFramework和Code-First的SQLite

我正在尝试使用EF动态创建嵌入式SQLite数据库但是,我无法使其工作,数据库文件永远不会被创建。 我有EF 4.2和最新版本的SQLite 这就是我所拥有的 的app.config 数据库初始化程序(放入一些内容) class PageDbInitializer : DropCreateDatabaseAlways { protected override void Seed(PageDB context) { for (int i = 0; i < 10; i++) { WebPage page = new WebPage() { Name = "Page" + (i + 1) }; context.Pages.Add(page); } base.Seed(context); } } 的DbContext: class PageDB : DbContext { public DbSet Pages […]

关系处于已删除状态

当我试图清除一个集合(调用.Clear )时,我得到以下exception: 保存不公开其关系的外键属性的实体时发生错误。 EntityEntries属性将返回null,因为无法将单个实体标识为exception的来源。 通过在实体类型中公开外键属性,可以更轻松地在保存时处理exception。 有关详细信息,请参阅InnerException。 内在的例外是: 来自’User_Availability’AssociationSet的关系处于’已删除’状态。 给定多重约束,相应的’User_Availability_Target’也必须处于’已删除’状态。 用户看起来像这样: …. ICollection Availability { get; set; } 可用性如下所示: int ID { get; set; } User User { get; set; } DateTime Start { get; set; DateTime End { get; set; } 配置如下: HasMany(x => x.Availability).WithRequired(x => x.User); HasRequired(x => x.User).WithMany(x => x.Availability); 导致问题的代码是: user.Availability.Clear(); 我已经看过其他替代方法,例如使用DbSet删除项目,但我觉得我的代码不会那么干净。 […]

如何获得entity framework代码第一个和可以为空的外键属性工作?

我正在尝试创建一个简单的entity framework代码第一个应用程序。 我有这些课程: public class User { public int UserId { get; set; } public string Username { get; set; } public virtual ActivationTicket ActivationTicket { get; set; } } public class ActivationTicket { public int ActivationTicketId { get; set; } public virtual User User { get; set; } public string Ticket { get; set; […]

如何使用Entity Framework Code-First方法将double 数组存储到数据库

如何使用Entity Framework Code-First将数组的双精度数据存储到数据库中,而不影响现有代码和体系结构设计? 我查看了Data Annotation和Fluent API,我还考虑将double数组转换为字节字符串,并将该字节存储到自己的列中的数据库中。 我无法访问public double[] Data { get; set; } public double[] Data { get; set; } 使用Fluent API的属性,我得到的错误消息是: double[]类型必须是不可为空的值类型才能将其用作参数’T’。 存储Data的类成功存储在数据库中,以及与此类的关系。 我只缺少Data列。

EF中IDatabaseInitializer的正确用法是什么?

我有一个自定义DatabaseInitialiser,如下所示 /// /// Implements the IDatabaseInitializer to provide a custom database initialisation for the context. /// /// TContext is the DbContext public class ParikshaDataBaseInitializer : IDatabaseInitializer where TContext : DbContext { /// /// The method to Initialise the database. /// Takes care of the database cannot be dropped since it is in use problem while […]

为什么Add-Migration有时会创建重复的迁移?

我在entity framework版本5中遇到代码首次迁移时遇到的奇怪问题。有时,由于挂起的更改, Update-Database失败,但Add-Migration命令仅生成迁移,其中包含上次迁移中已包含的数据库更改,并且数据库是最新的日期。 因此,我希望新的迁移是空的。 Add-Migration如何检测到哪些更改? 它似乎不使用数据库作为源。

entity framework5代码优先不创建数据库

我正在尝试使用Entity Framework的代码优先概念创建一个新数据库。 但是,在运行代码时,不会创建数据库(使用DropCreateDatabaseIfModelChanges设置),尽管代码运行正常。 当我尝试从数据库中获取内容时,我看到以下exception。 我的项目使用单独的DataAccess层进行设置,该层具有通用服务和存储库构造。 因此,我的所有实体,存储库和数据库上下文都在解决方案中的单独项目中。 我的global.asax文件包含以下代码。 Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); 这应该初始化一个新的数据库,如果它不存在,对吧? 我的数据库上下文类看起来像这样; namespace Website.DAL.Model { public class MyContext : DbContext { public IDbSet Projects { get; set; } public IDbSet Portfolios { get; set; } /// /// The constructor, we provide the connectionstring to be used to it’s base class. /// public MyContext() : base(“MyConnectionString”) { […]

如何在代码第一个ASP.NET MVC 5应用程序中正确设置一对多关系中的外键约束

所以我有一个文档表和ApplicationUser表。 并且一个用户可以使用代码第一种方法上传多个文档和外键约束。 但问题是我能够保存文档而无需在Documents表中分配UserID外键ID 。 我在这里想念的是什么 以下是我的新手尝试。 ApplicationUser模型: 它是框架提供的标准模型。 文件型号: public class Document { public int Id { get; set; } [StringLength(255)] public string FileName { get; set; } [StringLength(100)] public string ContentType { get; set; } public byte[] Content { get; set; } [StringLength(255)] public string DocumentName { get; set; } public string UserId { […]