Tag: ef code first

枚举与EF代码优先 – 标准方法播种数据库,然后使用?

是否有一个标准的方法来使用EF代码优先枚举? 似乎有一些例子使用包装类的枚举。 但是,我想能够定义枚举,并使用数据库初始值设定项将枚举值也播种到数据库中。 在定义枚举和创build一个包装器方面似乎没有太多的意义,如果我必须从枚举中手动枚举数据库表。

我在哪里可以find在包pipe理器窗口中执行的代码的控制台或debugging输出?

我首先使用EntityFramework代码进行迁移。 从包pipe理器控制台,我正在运行“更新数据库”。 这将执行我已覆盖的Configuration.Seed(上下文)。 protected override void Seed(WebContext context) { Console.WriteLine("Console Test"); Debug.WriteLine("Debug Test"); Trace.WriteLine("Trace Test"); } 我在哪里可以find输出? 更好的是,如何输出到包pipe理器窗口? Thx,Dan

如何将TimeSpan超过24小时映射到SQL Server Code First?

我正在尝试将TimeSpan Code First属性映射到SQL Server。 Code First似乎将其创build为SQL中的Time(7)。 但.Net中的TimeSpan可以处理比24小时更长的时间段,而且我需要存储超过24小时的事件长度。 Code First处理这个问题的最好方法是什么?

保存不会为其关系公开外键属性的实体时发生错误

我首先在Entity Framework 4.1代码中有一个简单的代码: PasmISOContext db = new PasmISOContext(); var user = new User(); user.CreationDate = DateTime.Now; user.LastActivityDate = DateTime.Now; user.LastLoginDate = DateTime.Now; db.Users.Add(user); db.SaveChanges(); user.Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") }; db.SaveChanges(); db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") } }); db.SaveChanges(); 问题是我得到一个错误 保存不会为其关系公开外键属性的实体时发生错误。 EntityEntries属性将返回null,因为单个实体不能被识别为exception的来源。 通过在实体types中公开外键属性,可以更轻松地处理exception。 有关详细信息,请参阅InnerException。 […]

使用graphdiff进行条件映射

我在DbContext有以下实体: public class A { public A() { Bs = new List<B>(); } public ICollection<B> Bs { set; get; } } 有时我想更新图表: var a = dbContext.As .AsNoTracking() .Include(x=>x.Bs) .firstOrDefault(); var c = new C(); a.Bs.Add(c); var d = new D(); var e1 = new E(); var e2 = new E(); d.Es.Add(e1); //<– added new E […]

entity framework迁移停止检测POCO更新

我正在使用entity framework和entity framework迁移来实现使用代码优先和自动迁移的解决scheme。 它曾经工作很好,但突然停止检测我对POCO的更新。 现在,当我添加一个新的属性(非常简单的属性,如年龄或电子邮件),并执行Update-Database ,没有任何反应,它给了我这个: 指定'-Verbose'标志来查看迁移过程中正在执行的SQL命令。 find0等待显式迁移:[]。 添加种子数据(如果在迁移设置类中重写了Seed方法)。 没有更新! 有没有人知道为什么会发生这种情况?

entity framework代码首先将Guid用作另一个标识列的标识

又如何在Code First中创build多个标识列? 由于集群性能,常见的build议是使用自动增量整数列而不是使用newid()创build的GUID。 为了将列声明为自动增量,必须使用Annotation [DatabaseGenerated(DatabaseGeneratedOption.Identity)]指定它。 但是,你只能在一个表中有一个身份。 因此,从一个基本模型开始,如: public abstract class ModelBase { // the primary key public virtual Guid Id { get; set; } // a unique autoincrementing key public virtual int ClusterId { get; set; } } 我们如何设置它以便: Guid是由数据库自动生成的,而不是代码 ClusterId是自动增量的 entity framework代码首先不会抛出各种类似的错误: 不支持将主键列的属性“StoreGeneratedPattern”设置为“计算”的表的修改。 改用“身份”模式。 仅供参考 ,如果您确实想在代码中自动生成它,则可以跳过Id字段的注释,并执行如下操作: public abstract class AbstractContext : DbContext { /// […]

WithOptionalDependent vs WithOptionalPrinciple – Definitive Answer?

我认为这可能有助于得到一个明确的答案何时使用WithOptionalDependent和何时使用WithOptionalPrincipal 。 这两个函数的帮助有点不清楚,我发现自己通过多个Stack Overflow的答案和其他网站上的答案结合的答案,以确信我已经有了正确的方向关系。 以下是MSDN关于WithOptionalDependent所说的内容: 将关系configuration为可选:在关系的另一侧没有导航属性可选。 被configuration的实体types将是依赖项,并且包含一个到委托人的外键。 关系所针对的实体types将是关系中的主体。 以下是关于WithOptionalPrincipal : 将关系configuration为可选:在关系的另一侧没有导航属性可选。 被configuration的实体types将是关系中的主体。 关系所针对的实体types将是依赖关系,并且包含一个外键给主体。 “正在configuration的实体types”这一行总是让我困惑的部分(我假设其他人)。 在这个例子中: class MyEntityA { [Key] public int Id { get; set; } public int BId { get; set; } [ForeignKey("BId")] public MyEntityB B { get; set; } } class MyEntityB { [Key] public int Id { get; set; } } modelBuilder.Entity<MyEntityA>().HasOptional(a […]

EF CodeFirst:参数@objname不明确或声明的@objtype(COLUMN)错误

我有一个名为EducationTypes的表和一个名为EducationTypes的实体,我重命名了一个实体属性,现在我经常得到Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong 。 我该如何解决这个问题? 生成的SQL脚本: EXECUTE sp_rename @objname = N'dbo.EducationTypes.nvarchar', @newname = N'EducationTypeTitle', @objtype = N'COLUMN'

用DbContext刷新实体实例

与EF4 CTP5 DbContext,这是什么等效 public void Refresh(Document instance) { _ctx.Refresh(RefreshMode.StoreWins, instance); } 我已经尝试过,但它不会做同样的事情,更新实例 public void Refresh(Document instance) { _ctx.ChangeTracker.DetectChanges(); } ?