Общая DLL для Entity Framework CoreC#

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

Сообщение Anonymous »

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

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

ICollection
как в объектах RMA, так и в объектах Person); но это приложение не имеет сущности RMAFollowUp.
Как мне справиться с ошибкой миграции, которая говорит:

Невозможно определить связь, представленную навигацией Person.RMAFollowUpCollection

, которая возникает из-за того, что у меня нет RMAFollowUpCollection, потому что ее нет RMAFollowUp в решении приложения.
Я безуспешно пытался найти директиву. Есть ли способ справиться с условием наличия библиотеки с «общими типами сущностей», но не использования всех этих типов?
Класс сущности Entity Framework Core в «общей» DLL выглядит следующим образом:

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

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

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

// ...
}
Класс конфигурации Entity Framework Core в общей 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 ... ework-core
Ответить

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

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

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

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

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