【发布时间】:2015-07-08 03:43:11
【问题描述】:
我使用 Code First 在 EF 中创建了这些实体 Product、Order、OrderedItem。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
[NotMapped]
public int IssuedQuantity { get; set; }
[NotMapped]
public int InhandQuantity { get; set; }
public virtual ICollection<OrderedItem> OrderedItems { get; set; }
...
}
public class Order
{
public int Id { get; set; }
public string ReferenceNumber { get; set; }
public virtual ICollection<OrderedItem> OrderedItems { get; set; }
...
}
public class OrderedItem
{
public int OrderId { get; set; }
public string ProductId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; set; }
[ForeignKey("ProductId")]
public virtual Product Product { get; set; }
...
}
现在我想通过将当前user id 传递给存储过程来获取所有产品。然后它将返回所有产品以及当前在用户手中的产品总数量。
问题在于 EF 没有将 SP 结果映射回 NotMapped 属性的 Product 实体。即产品实体中的所有属性都有值,但NotMapped 属性设置为NULL,即使我从 SP 返回它们的值。
我想问的是,EF 支持这种功能吗?如果是那怎么办?
注意我知道Computed Properties,但这会在表中创建不必要的列,我不希望这样,因为这些属性是在运行时计算的。
注意我知道我不需要创建OrderedItem 实体。但我在其中存储了一些其他属性,为简洁起见,此处将其删除。
【问题讨论】:
-
如果添加
NotMapped属性,则不会映射该属性。您可以设计Product类来映射表Product并设计UserProduct继承Product来映射SP 结果
标签: c# asp.net-mvc entity-framework ef-code-first