Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 属性名称重复,但数据类型不同_Linq_Linq To Sql - Fatal编程技术网

Linq 属性名称重复,但数据类型不同

Linq 属性名称重复,但数据类型不同,linq,linq-to-sql,Linq,Linq To Sql,我有一个名为Invoices的表,其中有一列名为Vendor。“供应商”列是对主键为Id的供应商表的FK引用 我的dbml创建适当的对象…发票和供应商。但是,我的发票对象既有一个Vendor属性(作为字符串)又有一个Vendor1属性(作为Vendor对象) 我认为这与我的列名与引用的对象名匹配有关,但在将列更改为VendorId并重新创建所有dbml对象之后,repeated属性仍然存在。看起来这是因为列与对象匹配…它创建Vendor来保存字符串值,然后创建Vendor1来引用Vendor对象

我有一个名为Invoices的表,其中有一列名为Vendor。“供应商”列是对主键为Id的供应商表的FK引用

我的dbml创建适当的对象…发票和供应商。但是,我的发票对象既有一个Vendor属性(作为字符串)又有一个Vendor1属性(作为Vendor对象)

我认为这与我的列名与引用的对象名匹配有关,但在将列更改为VendorId并重新创建所有dbml对象之后,repeated属性仍然存在。看起来这是因为列与对象匹配…它创建Vendor来保存字符串值,然后创建Vendor1来引用Vendor对象。为什么它不只是创建单个对象引用


谢谢

这不是重复的属性-它是两个不同的属性,用于两个不同的目的

供应商属性对应于数据库中列中的数据

Vendor1属性表示外键关系,即与另一个表的连接。之所以称为Vendor1,是因为已经使用了Vendor名称(使用VendorId作为列名是个好主意)。默认情况下不会提取Vendor1对象,除非您实际使用它。如果此属性可用,则可以更轻松地制定需要指定联接的查询

这两个属性在对象上都很有用


要回答您的最新问题,请执行以下操作:


无论您是否使用,Linq都必须获取供应商id,以防您使用它。因为它已经被提取,所以它在界面中也可见似乎很方便。如果您编写了obj.Vendor1.Id而不是obj.VendorId,则会导致不必要地从数据库中提取Vendor1对象。因此,还有一个性能问题。

感谢您的回复。你的答案和我想的一样。也许只有我一个人…但是财产上附加的整个“1”让我畏缩。。。