【问题标题】:How do I include an unmapped field in a POCO class如何在 POCO 类中包含未映射的字段
【发布时间】:2012-07-26 23:20:42
【问题描述】:

我是 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)。非常感谢。

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      AFAIU,这是不可能的。

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

      EF Code First foreign key without navigation property

      【讨论】:

        猜你喜欢
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 1970-01-01
        • 2012-05-13
        • 1970-01-01
        相关资源
        最近更新 更多