当前位置:  开发笔记 > 编程语言 > 正文

LINQ to SQL DataContext.Translate和名称与源不同的属性

如何解决《LINQtoSQLDataContext.Translate和名称与源不同的属性》经验,为你挑选了0个好方法。

我正在使用一些表,我希望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但是我没找到任何东西.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有