我似乎遇到了ColumnAttribute无法按预期工作的问题。
现在,我只想指出,我已经解决了我的问题,只需使用AS关键字根据C#属性为列命名,,但这不能解释ColumnAttribute 会发生什么。
如您在我的SQL中看到的那样,我应用了AS关键字来翻译列名,但是我省略了一些来显示问题。
在此执行SQL查询
var model = adsic.Database.SqlQuery<ADUser>(@"
SELECT
[mail],
[title] AS Title,
[c] AS Country,
[department] AS Department,
[company] AS Company,
[mobile],
[telephoneNumber],
[facsimileTelephoneNumber],
[name] AS Name,
[sAMAccountName] AS Username,
[l] AS Location,
[wWWHomePage] AS WebSite,
[manager] AS Manager
FROM openquery
(ADSI,'SELECT
mail, title, c, department, company,
mobile, telephoneNumber, facsimileTelephoneNumber, name, sAMAccountName,
l, wWWHomePage, manager
FROM ''LDAP://OU=Plus Pack,DC=global,DC=ns''
WHERE objectClass = ''User'' AND objectCategory = ''person'' '
)").AsQueryable().ToList();
如果我直接在SQL Server上运行此命令,一切看起来都很好,并且我填充了所有字段
反映查询的C#模型
using System.ComponentModel.DataAnnotations.Schema;
public class ADUser
{
//[Key]
//[Column("distinguishedName")]
//public string DistinguishedName { get; set; }
[Column("mail")]
public string Mail { get; set; }
//[Column("title")]
public string Title { get; set; }
[Column("c")]
public string Country { get; set; }
//[Column("department")]
public string Department { get; set; }
//[Column("company")]
public string Company { get; set; }
[Column("mobile")]
public string MobileNumber { get; set; }
[Column("telephoneNumber")]
public string TelephoneNumber { get; set; }
[Column("facsimileTelephoneNumber")]
public string DepartmentNumber { get; set; }
//[Column("sAMAccountName")]
public string Username { get; set; }
//[Column("l")]
public string Location { get; set; }
//[Column("wWWHomePage")]
public string WebSite { get; set; }
//[Column("manager")]
public string Manager { get; set; }
//[Column("cn")]
public string Name { get; set; }
}
现在是粗略部分。我在C#中进行模型转换后调试结果。
如您所见,尽管上面的原始SQL中都有值,但MobileNumber和DepartmentNumber并未填充。更重要的是,其他具有ColumnAttribute Mail,Country,TelephoneNumber的列也可以正常工作。我已经尝试过几次检查拼写错误或隐藏的空白字符。 如果我根本不使用ColumnAttribute,而仅使用AS关键字进行名称转换,则会填充所有字段。
答案 0 :(得分:1)
与this post重复 我不知道为什么,我在发布之前搜索问题时没有找到这个。或者为什么当我写我的帖子时没有建议。真的很遗憾。 尽管如此,EF有时甚至不尊重该属性的行为确实很奇怪。