将引用数据添加到包含“业务”数据且其主键类型为int

时间:2015-05-19 10:08:32

标签: c# entity-framework entity-framework-6

基本上我有一个产品实体

public class Product
{
    public int ID {get; set;}
    public string Name {get; set;}
}

我想创建:

UnknownProduct : Product
{
    public UnknownProduct()
    {
        ID = -2;
        Name = Unknown;
    }
}

这里的目标是从业务逻辑轻松创建UnknownProduct。我希望在结果表中有这个:

#Products 
ID | Name
1  | Beer // Referenced X times
2  | Soda // Referenced Y times
-1 | UnknownProduct // Referenced Z times, so only one row has been create !

但是我知道,使用前面的代码,每当我创建一个实例时,一个新行将被添加到表中。实际上ID = - 2,我会得到一个Identity Insert expcetion,但如果我删除它,每次都会添加一行。

我做了类似的事情,但主键是string类型,因此我可以使用显式主键为第一个实例设定种子,然后使用相同的主键实例化以下对象,从而避免重复。

这里,由于PK是int类型,这个列被标记为自动生成,这确实是我想要的。但在这个特定的情况下,我希望能够使用UnknownProduct作为参考数据,我可以直接从C#实例化,而不需要在DB中有重复项。知道如何实现这个目标吗?

0 个答案:

没有答案