0

我在 3 个 POCO 对象中继承了一个抽象类:

public abstract class BaseObject
{
    public virtual int Id { get; set; }
}

public class Post : BaseObject
{
    public string Name { get; set; }

    public virtual ICollection<PostCategory> PostCategory { get; set; }
}

public class Category : BaseObject
{
    public string Name { get; set; }

    public virtual ICollection<PostCategory> PostCategory { get; set; }
}

public class PostCategory
{
    [Key]
    [Column("Id", Order = 0)]
    public int PostId { get; set; }

    [Key]
    [Column("Id", Order = 1)]
    public int CategoryId { get; set; }

    public string Value { get; set; }

    public virtual Post Post { get; set; }
    public virtual Category Category { get; set; }
}

但是,每当我在包管理器控制台中执行“添加迁移”时,都会出现错误:

指定的架构无效。错误:(30,6):错误 0019:类型中的每个属性名称必须是唯一的。已定义属性名称“Id”。

基本上抱怨ColumnAttribute具有相同的属性名称(对象Id中的属性PostCategory)。

我需要属性名称与创建通用 Repo 类中使用的通用类相同。这就是为什么我在抽象类中有 Id 的原因。但是,这给了我 CF 迁移部分的错误。有没有办法解决这个问题?

谢谢!

4

1 回答 1

0

ColumnAttribute属性,设置在 SQL 服务器中生成的名称。显然该列Id不能生成两次。

只需删除s,让服务器和平ColumnAttribute生成表。PostCategory

于 2013-07-04T23:41:11.720 回答