我使用EF(DB頭),並嘗試使用下一個代碼表中添加新行:如何使用EF獲取新行中所有必填字段的名稱?
var user = new User();
//Some logic to fill the properties
context.Users.AddObject(user);
context.SaveChanges();
節省EF變化之前,我想驗證所有必需的(不是null,沒有默認值價值)屬性被填充。我怎麼能得到所有這樣的領域?
我試過幾種方法,但無法達到所需的效果。最後一次嘗試是這樣的:
var resList = new List<PropertyInfo>();
var properties = type.GetProperties(BindingFlags.DeclaredOnly |
BindingFlags.Public |
BindingFlags.Instance).Where(p => !p.PropertyType.IsGenericType);
foreach (var propertyInfo in properties)
{
var edmScalarProperty =
propertyInfo.CustomAttributes.FirstOrDefault(
x => x.AttributeType == typeof (EdmScalarPropertyAttribute));
var isNullable = true;
if (edmScalarProperty != null)
{
var arg = edmScalarProperty.NamedArguments.FirstOrDefault(x => x.MemberName == "IsNullable");
if (arg != null)
{
isNullable = (bool) arg.TypedValue.Value;
}
}
if (!isNullable)
{
resList.Add(propertyInfo);
}
}
return resList;
Would'nt它更容易產生您的edmx文件中包含自定義.tt的不可空的無默認屬性列表?我沒有看到你如何從那裏獲得「默認值」的屬性(但我可能會錯過某些東西)。 – 2014-09-12 12:33:17