Way*_*oss 6 .net c# sql-server linq-to-sql
我正在使用一些表,我希望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
)
Run Code Online (Sandbox Code Playgroud)
这是它映射到的类(由LINQ设计器生成...... LINQ属性和为简洁起见而遗漏的其他东西):
public partial class User
{
int UserId;
string Login;
string Active,
string Pwd
}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时,不会填充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<User>( dataReaderResult ).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
!此时,我检查用户对象,我可以看到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'
Run Code Online (Sandbox Code Playgroud)
最初,当UserId列具有不同的属性名称时,我得到了一个异常The required column [UserId] does not exist in the results.我环顾四周,看到一些MSFT人员的回复说这是一个错误.
这有关系吗?它固定不变吗?有谁知道什么时候修好?
编辑:更多信息.
我认为这是关系到错误具有凯西鲁MSFT于2007年8月14日评论在这里,她说:
感谢您报告此问题.从您的问题我们能够重现问题,产品团队正在寻找适当的分类和解决方案.
我想知道这是否与我正在经历的内容有关,以及我是否可以获得更多信息.我搜查了linq translate site:connect.microsoft.com但是我没找到任何东西.
我认为与此相关的错误来自 MSFT 的 Kathy Lu 于 2007 年 8 月 14 日发表的评论,其中她说“感谢您报告此问题。从您的问题中我们能够重现该问题,并且产品团队正在研究适当的分类和决心”。来自https://forums.microsoft.com/msdn/ShowPost.aspx?PostID=1983746&SiteID=1&pageid=0
我想知道这是否与我正在经历的事情有关,以及我是否可以获得更多相关信息。我搜索了( linq 翻译站点:connect.microsoft.com )但没有找到任何内容。
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |