У меня есть .EDMX с моими моделями от EF 6.0, и я хочу добавить атрибуты в некоторые из моих полей. Я прочитал много примеров, когда они используют DataAnnotations с MetadataType ... Я пытался реализовать, но это не отменяет ... Например, если у меня естьDataAnnotations с EDMX EF 6.0 не работает
[Queryable]
public string Name;
это не будет работать.
, но если у меня есть
[Queryable]
public string Name2;
Это будет работать, и я буду видеть Имя2 как часть атрибутов!
код я использую для того, чтобы найти эти атрибуты выглядит следующим образом:
var properties = typeof(TEntity).GetProperties().Where(prop => prop.IsDefined(typeof(QueryableAttribute), false));
Как я уже сказал, когда я Имя2, я могу найти его в списке атрибутов. И когда у меня есть имя, я не ...
вот мои 3 файлов, они оба в "MMS.Entities" имен
AreaMetadata.cs
namespace MMS.Entities
{
[MetadataType(typeof(AreaMetadata))]
public partial class Area
{}
public class AreaMetadata
{
[Queryable]
public string Name;
[Queryable]
public string Abbreviation;
[Queryable]
public string Description;
}
}
Area.cs
namespace MMS.Entities
{
using MMS.Common.Utilities;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Area : Entity, IEntity
{
public Area()
{
this.Plants = new HashSet<Plant>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Abbreviation { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
public bool IsDeleted { get; set; }
public int UserCreatedId { get; set; }
public Nullable<int> UserModifiedId { get; set; }
public System.DateTime DateCreated { get; set; }
public Nullable<System.DateTime> DateModified { get; set; }
public virtual ICollection<Plant> Plants { get; set; }
}
}
Должно ли имя AreaMetadata.cs быть другим? Должен ли я включать что-нибудь где-нибудь, чтобы заставить их работать вместе?
Спасибо за ваши советы!
В примере я представил, я забыл поставить {получить; задавать; } в свойствах выше ... но это не моя проблема, так как у меня есть они уже в моем коде. –
Может быть, свойства AreaMetadata сначала вызываются и переопределяются свойствами Area.cs? Возможно ли это? Если да, то как мне удастся сначала вызвать EDMX и добавить метаданные? –