问题描述
您好
以下代码不会运行它 - 产生跟随它的错误。如果我删除EntityA的定义,或者如果我使EntityB非抽象,那么它可以正常工作。这个问题似乎源于同一个超类的抽象和非抽象子类
。
The following code will not run it - produces the errors following it. If I remove the defintion for EntityA, or if I make EntityB non-abstract, it works OK. The problem seems to to stem from having both an abstract and a non-abstract subclasses of the same super-class.
namespace EFCodeFirstTest
{
public class Entity
{
public Guid Id {get; set;}
}
public class EntityA : Entity { }
public abstract class EntityB : Entity { }
public class EntityC : EntityB { }
public class MyContext : DbContext
{
public DbSet<Entity> Entities { get; set; }
}
class Program
{
static void Main(string[] args)
{
var ctx = new MyContext();
ctx.Entities.Add(new EntityC { Id = Guid.NewGuid() });
ctx.SaveChanges();
}
}
}
(6,10):错误3034:从第6,18行开始映射片段时出现问题:2具有不同键的实体映射到同一行。确保这两个映射片段不会将具有不同
键的两组实体映射到两个重叠的行组。
(12,10):错误3034:从第12,18行开始映射片段时出现问题:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有不同
键的两组实体映射到两个重叠的行组。
(23,10):错误3034:从第18,23行开始映射片段时出现问题:具有不同主键的两行映射到同一实体。确保这两个映射片段不会将具有相同
键的两组实体映射到两个重叠的行组。
推荐答案
我添加了对EntityFramework的引用,以及一个"using System.Data"。实体",按下f5,没有错误,出现命令窗口。
I added a reference to EntityFramework, and a "using System.Data.Entity", pressed f5, no errors, a command window appeared.
你能验证你实际上是在运行CTP5吗?或者除了上面显示的内容之外还有更多代码吗?
Can you verify that you are actually running with CTP5? Or is there more code in addition to what you show above?
这篇关于CTP5 Code First TPH与抽象类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!