2008-12-15 78 views
1

去容易对我的参考,这是我的第一个问题:)如何创建到现有的记录

我一直在linqToSql工作了一个月左右,并有只是这一件事情是困扰我...

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

当插入我需要设置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

您是使用DBML设计器还是手动编写实体类?如果您正在使用Designer,我希望由于您的表有一个customerTypeID列,因此您的Customer类中将有一个名为customerTypeID的属性。你真正需要做的是这个属性的值设置为ID的

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

这应该精细工作,只要你不想参考相关实体本身(即,你的价值只是为了保存这个特定的对象,而不是马上使用它)。如果你需要引用相关实体 - 比如说访问它们的属性 - 它将不得不从数据库中检索值。我不得不看看设计器生成的代码,但我认为id-value列上的属性设置器不会更新实体引用,而实体引用设置器会更新id-value字段。

+0

我正在使用ADO.NET实体数据模型。我确实需要引用相关的对象,所以customerTypeID不能被映射(这个代码只是一个简单的例子)... 我想能够做你说的,但同时保持引用另一个对象。 – Sergio 2008-12-15 13:02:09

相关问题