EF Core: Один принципал с двумя разными отношениями с одним и тем же зависимым? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 EF Core: Один принципал с двумя разными отношениями с одним и тем же зависимым? [закрыто]

Сообщение Anonymous »

У меня есть модель класса с классовой принципиальностью, которая служит главной и содержит связанную с 1: 1, а также 1: N-обращение как к зависимости. Как настроить эти отношения, чтобы вставить, обновлять и удалять работы без ошибок? < /P>
Это классы модели данных: < /p>
public class PrincipalEntity
{
public PrincipalEntity() { }
public PrincipalEntity(Guid id, string number, string name, DependentEntity dependent, List dependents)
{
Id = id;
Number = number;
Name = name;
Dependent = dependent;
Dependents = dependents;
}
public Guid Id { get; set; }
public string Number { get; set; } = null!;
public string Name { get; set; } = null!;
public DependentEntity Dependent { get; set; } = null!;
public List Dependents { get; set; }
}

public class DependentEntity
{
public DependentEntity() { }
public DependentEntity(Guid id, string name)
{
Id = id;
Name = name;
}
public Guid Id { get; set; }
public string Name { get; set; } = null!;

public PrincipalEntity PrincipalEntityWithSingleDependent { get; set; } = null!;
public Guid PrincipalEntityWithSingleDependentId { get; set; }
public PrincipalEntity PrincipalEntityWithMultipleDependents { get; set; } = null!;
public Guid PrincipalEntityWithMultipleDependentsId { get; set; }
}
< /code>
И это моя текущая конфигурация: < /p>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

modelBuilder
.Entity()
.HasOne(x => x.Dependent)
.WithOne(x => x.PrincipalEntityWithSingleDependent)
.HasForeignKey(x => x.PrincipalEntityWithSingleDependentId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder
.Entity()
.HasMany(x => x.Dependents)
.WithOne(x => x.PrincipalEntityWithMultipleDependents)
.HasForeignKey(x => x.PrincipalEntityWithMultipleDependentsId);
}
< /code>
Я старался уже сделать одно отношения, нулевые, но это не помогает. Все еще есть исключение во время сохраняющейся новой принципиальности. < /P>
Я выполняю его следующим образом: < /p>
internal class Program
{
private static async Task Main(string[] args)
{
Console.WriteLine("Hello, World!");

using (var context = new TestDataContext())
{
var dependent1 = new DependentEntity(Guid.NewGuid(), "John Doe");
var dependent2 = new DependentEntity(Guid.NewGuid(), "Jane Doe");
var dependent3 = new DependentEntity(Guid.NewGuid(), "Johnny Doe");

var principal = new PrincipalEntity(Guid.NewGuid(), "p1Number", "p1Name", dependent1, [dependent2, dependent3]);
await context.AddAsync(principal);

await context.SaveChangesAsync();
}

Console.Read();
}
}
< /code>
Тогда существует следующее исключение во время Savechangesasync: < /p>
SqlException: Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_DependentEntity_PrincipalEntity_PrincipalEntityWithSingleDependentId". Der Konflikt trat in der Test123-Datenbank, Tabelle "dbo.PrincipalEntity", column 'Id' auf.
Die Anweisung wurde beendet.


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

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

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

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

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

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