使用外键约束从db检索数据

时间:2014-04-02 12:31:13

标签: linq entity-framework

从db获取数据时出错。错误如下: -

{"Invalid column name 'Amount_Value'.\r\nInvalid column name 'Amount_Currency'.\r\nInvalid column name 'Amount_Value'.\r\nInvalid column name 'Amount_Currency'."}

这是我的主要模式" Deals": -

public class Deal {

   public long ID { get; set; }

   [StringLength(1024),Required]
    public string Title { get; set; }

   public Client Party { get; set; }
   public long PartyID { get; set; }


   public DateTime Created { get; set; }
   public long Version { get; set; }

   [DataType(DataType.MultilineText)]
   public string Notes { get; set; }

   public Money Amount { get; set; }
   public DealKindEnum Mode { get; set; }
  }

这里"金钱"是另一个类是这样的: -

public class Money
{
 [DataType(DataType.Currency)]
 public double Value { get; set; }
 public string Currency { get; set; }
}

使用此查询时出错: -

var query = from client in db.Clients
 join ra in db.Deals on client.ID equals ra.PartyID
 where (ra.ID == id || id == 0)
 select ra;

1 个答案:

答案 0 :(得分:1)

EF无法对数据库中没有的属性执行任何操作。 根据您的评论,Money不是一个实体。

因此,您必须将Deal类中的属性标记为NotMapped

[NotMapped]
public Money Amount { get; set; }

在查询时,EF不会尝试从db获取任何内容。 当然,你在Amount属性中没有任何东西,但如果它不在db中你怎么能...