如何创建对现有记录的引用

时间:2008-12-15 12:19:25

标签: linq linq-to-sql

对我来说很容易,这是我的第一个问题:)

我一直在使用linqToSql大约一个月,而且只有这一件事困扰着我......

假设我有一个名为“Customer”的实体对象和另一个名为“CustomerType”的客户,Customer作为对CustomerType的引用。

当插入Customer我需要设置CustumerType时,我有我想设置的customerTypeID值,所以我正在做的是:

if(c.CustomerTypeReference == null)
{
   c.CustomerTypeReference = new System.Data.Objects.DataClasses.EntityReference<CustomerType>
}


c.CustomerTypeReference.EntityKey = new System.Data.EntityKey("DataContext.CustomerType", "id", value);

这很有效,但在我看来这很复杂。有没有其他方法可以做到这一点?

请记住,我不想从数据库中获取对象CustomerType,这个例子很简单,但我使用的是包含大约100个属性的对象。

1 个答案:

答案 0 :(得分:1)

您使用的是DBML Designer还是手工编写了实体类?如果您正在使用Designer,我希望由于您的表具有customerTypeID列,因此customerTypeID类中将存在名为Customer的属性。您真正需要做的就是将此属性的值设置为id

的值
  Customer c = new Customer();
  c.customerTypeID = value;

只要您不想自己引用相关实体(即,您只是要保存此特定对象,而不是立即使用它),这应该可以正常工作。如果您需要引用相关实体 - 比如访问它们的属性 - 它将不得不从数据库中检索值。我必须查看设计器生成的代码,但我认为id-value列上的属性setter不会更新实体引用,而实体引用setter会更新id-value字段。