Общая DLL для EntityFrameworkC#

Место общения программистов C#
Ответить
Anonymous
 Общая DLL для EntityFramework

Сообщение Anonymous »

Создавая «общую» DLL с общими объектами (т. е. Person, RMA, RMAFollowUp и т. д.) в этой библиотеке, я кодирую все ссылки, такие как сущность RMAFollowUp, которая может ссылаться на Person и RMA, но может быть множество последующих действий по RMA (т. е. поставщик уведомлен о задержке == 1 запись), а затем через 2 дня может быть отслеживание (продукт был отправлен обратно, как было уведомлено клиентом == 2-я запись о «последующем действии»)...
Я создаю приложение, которое использует человека, а также RMA, но не использует «последующую» сущность. Есть сопоставление в RMA и в Person(

Код: Выделить всё

ICollection
как в объектах RMA, так и в объектах Person); но в этом приложении нет объекта RMAFollowUp.
Как мне справиться с ошибкой миграции, которая отражает «Невозможно определить связь, представленную навигацией Person.RMAFollowUpCollection», которая возникает из-за того, что у меня нет RMAFollowUpCollection, потому что в решении приложения нет объекта RMAFollowUp.
У меня есть безуспешно попыталась найти директиву... Есть ли способ справиться с условием наличия библиотеки с «общими типами объектов», но не использования всех этих типов?
Класс сущности Entity Framework в «Common DLL»:

Код: Выделить всё

public class EFPersonEntity : EFDomainEntityBase
{
public string FirstName { get; set; } = string.Empty;

public ICollection? RmaFollowUpCommentByCollection { get; set; }  = null;

// ...
}
Класс конфигурации Entity Framework в «Common DLL»:

Код: Выделить всё

public class RmaFollowUpEntityConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder entity)
{
entity.ToTable("RmaFollowUps");
// ...

entity.Property(c => c.CommentById)
.HasColumnType("NVARCHAR(450)")
.HasMaxLength(450)
.IsRequired();

entity.HasOne(c => c.CommentBy)
.WithMany(c => c.RmaFollowUpCommentByCollection)
.HasForeignKey(c => c.CommentById)
.OnDelete(DeleteBehavior.NoAction);

// ...
}
}
Код из приложения, использующего DLL:

Код: Выделить всё

public class dMBPDDbContext : IdentityDbContext
{
public DbSet People { get; set; }

// ...

protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);

_ = builder.ApplyConfiguration(new PersonEntityConfiguration());

// ...
}
}
В приложении не используется EFRmaFollowUpEntity или EFRmaEntity, поэтому при компиляции возникает следующая ошибка.

Невозможно создать «DbContext» типа «dMBPDDbContext». Исключение «Невозможно определить взаимосвязь, представленную навигацией «EFPersonEntity.RmaFollowUpCommentByCollection» типа «ICollection»...

Как избежать ошибок такого типа во время добавления-миграции в приложении?

Подробнее здесь: https://stackoverflow.com/questions/798 ... yframework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»