如何在POCO类中包含未映射的字段

时间:2012-07-28 14:52:46

标签: entity-framework

我是EF的新手,我只是在试验。如果有可能,有人可以告诉我。给出DB中的(产品)表,如:

Id Cost DescriptionFK
-- ---- -------------
?  ?    ?

我希望相应的POCO类(实体)看起来像:

public class Product
{
    public int Id { get; set; }
    public decimal Cost { get; set; }
    public string Description { get; }
}

请注意,类中的“描述”是一个只读字符串(没有setter),但它是表中的一个键。我正在调用一个存储过程来关闭它(将密钥转换为相应的字符串并返回上面的类),但如果我现在执行类似的操作:

// ...
product.Cost = 20;
myContext.SaveChanges();

我得到一个例外,抱怨“描述”字符串没有映射。我删除了映射,因为它是只读的,我不需要在类本身中包含“DescriptionFK”。有没有办法解决这个问题(仅限POCO)。非常感谢。

2 个答案:

答案 0 :(得分:11)

如果您只是想将Description属性作为计算字段,请将[NotMapped]添加到您的属性中以显式排除它,然后生成数据库:

public class Product
{
    public int Id { get; set; }
    public decimal Cost { get; set; }

    [NotMapped] 
    public string Description { get; }
}

答案 1 :(得分:0)

AFAIU,这是不可能的。

"您始终需要至少一个导航属性才能在数据库中创建外键约束。"

EF Code First foreign key without navigation property

相关问题