Я хочу создать настраиваемое свойство на одном из моих сущностей, сопоставленных с базой данных, однако это свойство не сопоставляется с базой данных, я создал свойство с использованием частичных классов, но при попытке скомпилировать я получаю сообщение об ошибке, сообщающее мне, что свойство не отображается. Есть ли атрибут или что-то, что я должен добавить? Спасибо заранее.
Создание не сопоставленного свойства в сущности (инфраструктуре сущности)
Ответ 1
Используйте частичные классы для добавления добавленных свойств или методов. Например.
namespace WhateverNamespaceYourEntityModelIsIn
{
public partial class TheNameOfYourEntity
{
public string MyNewProperty { get; set; }
}
}
и это должно сделать вас.
Ответ 2
Вы также можете пометить свое свойство атрибутом [NotMapped]
или использовать метод Ignore
из свободного API.
Свойство
public class EntityName
{
[NotMapped]
private string PropertyName { get; }
}
Свободный API
public class Entities : DbContext
{
public DbSet<EntityType> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Some database configuration
modelBuilder.Entity<EntityType>()
.Ignore(i => i.PropertyName);
}
}
Ответ 3
Я серьезно опаздываю на разговор, но вы также хотите отметить частичное, как сериализуемое, и свойство как сериализуемое - если вы когда-либо планируете JSON или сериализуете объекты:
[Serializable()]
public partial class MyClass {
private System.Nullable<int> _Age;
[global::System.Runtime.Serialization.DataMemberAttribute(Order = 4)]
public System.Nullable<int> Age {
...
}
}
Необходимы обе директивы [Serializable()] и [global:]. Если вы исключили [global:], в любое время, когда вы его сериализовали, он будет проигнорирован и не будет включен в сериализацию.
Ответ 4
Эта страница действительно помогла мне. Я добавлю то, что я добавил в конфигурацию отображения, увидев ответ Kniganapolke.
public TheObjectName()
{
this.HasKey(t => t.ID);
this.Ignore(t => t.IsProcess); //we don't want EF to worry about this
}
Спасибо всем, спасибо SO!