5

我是 EF 的新手,我只是在尝试。有人可以告诉我以下是否可能。给定数据库中的(产品)表,如下所示:

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

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

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

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

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

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

4

2 回答 2

14

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

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

    [NotMapped] 
    public string Description { get; }
}
于 2012-07-29T00:49:59.770 回答
0

AFAIU,这是不可能的。

“您总是需要至少一个导航属性才能在数据库中创建外键约束。”

没有导航属性的EF Code First外键

于 2018-01-18T13:28:03.310 回答