对我来说很容易,这是我的第一个问题:)
我一直在使用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个属性的对象。
答案 0 :(得分:1)
您使用的是DBML Designer还是手工编写了实体类?如果您正在使用Designer,我希望由于您的表具有customerTypeID列,因此customerTypeID
类中将存在名为Customer
的属性。您真正需要做的就是将此属性的值设置为id
Customer c = new Customer();
c.customerTypeID = value;
只要您不想自己引用相关实体(即,您只是要保存此特定对象,而不是立即使用它),这应该可以正常工作。如果您需要引用相关实体 - 比如访问它们的属性 - 它将不得不从数据库中检索值。我必须查看设计器生成的代码,但我认为id-value列上的属性setter不会更新实体引用,而实体引用setter会更新id-value字段。