Tag: ef code first

entity framework5代码优先中的一对一和一对多关系

我试了整整一天才能搞定这个。 我学到了很多关于EF的Fluent API的知识(例如, 这是一篇优秀的文章),但是我没有成功。 我有三个实体: public class Address { [Key] public virtual int AddressId { get; set; } public virtual string AddressString { get; set; } } public class User { [Key] public virtual int UserId { get; set; } public virtual ICollection Addresses { get; set; } } public class House { [Key] public […]

entity frameworkDbContext SaveChanges()OriginalValue不正确

我试图通过覆盖SaveChanges()方法使用EF 4.1实现AuditLog,如下面所述: http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for-audit-logging/ entity framework4.1 DbContext覆盖SaveChanges以审核属性更改 我遇到了“修改过”的条目问题。 每当我尝试获取相关属性的OriginalValue时,它总是具有与CurrentValue字段中相同的值。 我首先使用此代码,并成功识别修改的条目: public int SaveChanges(string userID) { // Have tried both with and without the following line, and received same results: // ChangeTracker.DetectChanges(); foreach ( var ent in this.ChangeTracker .Entries() .Where(p => p.State == System.Data.EntityState.Added p.State == System.Data.EntityState.Deleted p.State == System.Data.EntityState.Modified)) { // For each change record, get […]

使用Entity Framework Code First时创建外键属性有什么意义?

在查看本网站上的问题和答案并阅读一些关于Code First开发的Google排名前列的教程时,我经常会看到以下模式…… public class Category { public Category() { Products = new Collection(); } public Guid ID { get; set; } public string Name { get; set; } public virtual ICollection Products { get; set; } } public class Product { public Guid ID { get; set; } public string Name { get; set; } […]

如何在EntityFramework Codefirst中以编程方式使用迁移?

我正在使用EF Code First的项目。 我正在尝试使用迁移function。 我不想使用Package Console Manager。 如何以编程方式执行“添加 – 迁移”和“更新 – 数据库”? add-migration TestMigration01 -force update-database

entity framework代码首先是不创建数据库

以下是我的解决方案的概述: 这是我的PizzaSoftwareData类: namespace PizzaSoftware.Data { public class PizzaSoftwareData : DbContext { public DbSet Customers { get; set; } public DbSet Orders { get; set; } public DbSet Products { get; set; } public DbSet Users { get; set; } } } 根据Scott Guthrie博客上的一个示例,您必须在应用程序的开头运行此代码才能创建/更新数据库架构。 Database.SetInitializer(new CreateDatabaseIfNotExists()); 我在PizzaSoftware.UI中的Program.cs中运行那行代码。 namespace PizzaSoftware.UI { static class Program { /// /// […]

在不使用IDbContextFactory的情况下编写第一个自定义连接字符串和迁移代码

我正在尝试编写一个易于理解的DBContext类,它采用自定义连接字符串,可以运行迁移,并且我允许我使用包管理器生成迁移。 我好像在四处走动。 我已经能够使用对我来说很糟糕的代码来使用它。 我在关于连接字符串和迁移的这个问题的答案中记录了这一点。 Radek的答案看起来比我的要好得多,但我发现当我实现它然后尝试在Package Manager中创建一个迁移时我收到了消息 目标上下文’DataLayer.Context’不可构造。 添加默认构造函数或提供IDbContextFactory的实现。 DataLayer.Context是我的上下文类。 我不想提供IDbContextFactory的实现(而Radek的回答似乎表明它不需要) 更新: 如果我包含一个没有参数的构造函数,我可以生成一个迁移。 例如 public Context() : base(“ConnectionStringName”) { } 对于我的上下文创建,我在app.config中传递连接字符串的名称 public Context(string connString) : base(connString) { Database.SetInitializer(new CustomInitializer()); Database.Initialize(true); } 最后,我能够生成迁移,并为用户选择的数据库运行迁移。 但是:当我删除数据库然后运行我的应用程序时,我遇到了问题。 我正在使用的初始化代码,来自上面的链接 public class CustomInitializer : IDatabaseInitializer { public void InitializeDatabase(Context context) { try { if (!context.Database.Exists()) { context.Database.Create(); } else { if (!context.Database.CompatibleWithModel(false)) […]

在IQueryable上调用ProjectTo ()时,AutoMapper抛出StackOverflowException

我使用EF Code First创建了具有彼此集合的类。 实体: public class Field { public int Id { get; set; } public string Name { get; set; } public virtual List Teachers { get; set; } public Field() { Teachers = new List(); } } public class AppUser { public int Id { get; set; } public string Email { get; […]

在什么情况下我需要entity framework中的外键和导航属性

我的Order课程有: public int CustomerId { get; set; } public Customer Customer { get; set; } 我真的需要这两个属性来建立关系吗? 我没有使用断开连接的实体,我使用代码第一种方法。

entity framework:如何避免表中的Discriminator列?

我有使用Entity Framework Code First方法创建的下表。 如何修改C#代码,以便不在数据库中创建不需要的Discriminator列? 是否有任何属性可以实现这一目标? 如何将外键列名称设为“PaymentID”而不是“Payment_ PaymentID”? 是否有任何属性可以实现这一目标? 注意:EntityFramework.dll的运行时版本是v4.0.30XXX 码 public abstract class PaymentComponent { public int PaymentComponentID { get; set; } public int MyValue { get; set; } public string MyType { get; set; } public abstract int GetEffectiveValue(); } public partial class GiftCouponPayment : PaymentComponent { public override int GetEffectiveValue() { if […]

EF Code First不为ICollection 生成表

我想在我的一个数据类中使用下面的ICollection属性(让我们称之为“Foo”) public class Foo { [Key] public int FooId { get; set; } public string SomeValueOrOther { get; set; } public virtual ICollection AllowedBars { get; set; } } 我可以在使用实体上下文时添加字符串值,但它们不会“去任何地方”。 换句话说,不会生成表来表示此关系,因此不会保存任何值。 我期望的是一个包含两列的表,一个用于“FooId”,一个用于“AllowedBar”,EF用于自动将其映射到集合(与复杂类型一样)。 由于没有发生这种情况,我必须使用上面描述的两个属性创建一个名为“FooAllowedBar”的类。 这让我很不高兴,因为它是我在整个项目中唯一的“join”类型。 当然,它可以工作,所以只勾选一个方框,但是有人知道如何让EF为字符串集关系生成一个表吗? (或int,或datetime等) 很可能,从EF上的那些小信息(仍然!)来看,这种function还没有得到支持。 我想接近一个确定的答案。 非常感谢,Rob