Кажется, у меня возникла проблема с атрибутом 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 все выглядит хорошо, и я получаю все поля заполнены
Модель 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 #. Как видите, MobileNumber и DepartmentNumber не заполняются, несмотря на то, что оба имеют значение в необработанном SQL выше.Более того, другие колонки с ColumnAttribute Mail, Country, TelephoneNumber работают просто отлично.Я уже несколько раз пытался проверить на наличие опечаток или скрытых пробельных символов. Если я вообще не использую атрибут ColumnAttribute и просто использую ключевое слово AS для перевода имен, я получаю все заполненные поля.