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

Joh*_*own 4 entity-framework

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

Id Cost DescriptionFK
-- ---- -------------
?  ?    ?
Run Code Online (Sandbox Code Playgroud)

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

public class Product
{
    public int Id { get; set; }
    public decimal Cost { get; set; }
    public string Description { get; }
}
Run Code Online (Sandbox Code Playgroud)

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

// ...
product.Cost = 20;
myContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

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

Jud*_*udo 11

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

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

    [NotMapped] 
    public string Description { get; }
}
Run Code Online (Sandbox Code Playgroud)