Pull to refresh

Comments 7

Видим, что в конструкторе они инициализируют field значением true. Вообще у ColumnAttribute есть еще свойство CanBeNullSet, которое к несчастью internal, при помощи которого можно было бы узнавать выставлено ли свойство или нет.


Не пробовали проверить прямо в runtime через механизмы рефлексии, используя BindingFlags.NotPublic?
думал об это — можно, конечно, но просто не вижу смысла. Если только просто убедиться, что точно, только в этом случае, не выставлен CanBeNull — как бы на время разработки сделать проверку. Может, конечно, так и стоит сделать, чтобы обезопасить на будущее.
занятно
интересно в Entity Framework существует такая проблема?
Вроде нет, там получается такой маппинг:
[global::System.Data.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable=false)]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public decimal price
{ get { .... } set { .... } }


* This source code was highlighted with Source Code Highlighter.
public static bool IsDbNull(this PropertyInfo propertyInfo)
{
var columnAttribute = propertyInfo.GetAttribute();
var notNull = columnAttribute.DbType.Contains(«NOT NULL»);
return columnAttribute.CanBeNull && !notNull;
}
об этом тоже думал, но — это в случае если в БД и в классах всегда одно и тоже будет. а если в БД оставите null а в модели сделаете not null (причины разные могут быть)?
Я не думаю что за логику этих причин должен отвечать linq to sql, имхо это не его задача.
Sign up to leave a comment.

Articles

Change theme settings