我正在使用一些表,我希望C#类具有与基础表列不同的属性名称.但是,当我使用Translate方法读取结果时,永远不会填充与源名称不匹配的属性.即使我使用Linq生成SQL.
例如,我的表在DB中定义如下:
CREATE TABLE User_Entry ( UserId int IDENTITY (1, 1) NOT NULL, Login_Id varchar (50) NOT NULL, Active char(1) NOT NULL, PASSWORD varchar(75) NULL )
这是它映射到的类(由LINQ设计器生成...... LINQ属性和为简洁起见而遗漏的其他东西):
public partial class User { int UserId; string Login; string Active, string Pwd }
当我执行以下操作时,不会填充Login和Pwd属性,但UserId和Active属性是.
Data.DbContext db = new Data.DbContext(); IQueryable query = db.Users.Where(usr => usr.Login == request.LoginString); SqlCommand cmd = (SqlCommand)data.GetCommand(query); ... execute the command (asynchronously) ... User user = db.Translate( dataReaderResult ).FirstOrDefault();
!此时,我检查用户对象,我可以看到Login和Pwd列没有填充!
这是生成的sql:
exec sp_executesql N'SELECT [t0].[UserID] AS [UserId], [t0].[Login_ID] AS [Login], [t0].[Active], [t0].[PASSWORD] AS [Pwd] FROM [dbo].[User_Entry] AS [t0] WHERE [t0].[Login_ID] = @p0', N'@p0 varchar(13)', @p0 = 'test_user'
最初,当UserId列具有不同的属性名称时,我得到了一个异常The required column [UserId] does not exist in the results
.我环顾四周,看到一些MSFT人员的回复说这是一个错误.
这有关系吗?它固定不变吗?有谁知道什么时候修好?
编辑:更多信息.
我认为这是关系到错误具有凯西鲁MSFT于2007年8月14日评论在这里,她说:
感谢您报告此问题.从您的问题我们能够重现问题,产品团队正在寻找适当的分类和解决方案.
我想知道这是否与我正在经历的内容有关,以及我是否可以获得更多信息.我搜查了linq translate site:connect.microsoft.com
但是我没找到任何东西.