Почему EF Core удаляет мою другую сущность при создании новой? [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему EF Core удаляет мою другую сущность при создании новой? [закрыто]

Сообщение Anonymous »

У меня есть эта функция: < /p>

public NetworkUser Create(Guid networkId, Guid userProxyId, CreateNetworkUserDto createNetworkUser)
{
var network = networkService.GetDetailsById(networkId);
var userProxy = userProxyService.GetById(userProxyId);
if (network == null) throw new NotFoundHttpException("Network not Found");
if (userProxy == null) throw new NotFoundHttpException("UserProxy not Found");

if (GetByIds(networkId, userProxyId) != null) throw new ConflictHttpException("NetworkUser already exists");

var networkUser = mapper.Map(createNetworkUser);
networkUser.Id = Guid.NewGuid(); // FORCE a fresh id
networkUser.NetworkId = networkId;
networkUser.UserProxyId = userProxyId;

networkUser = repository.Create(networkUser);
return networkUser;
}
< /code>
и консоль выводит следующее: < /p>
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (1ms) [Parameters=[@p0='?' (DbType = Guid), @p1='?' (DbType = Guid), @p2='?' (DbType = DateTime), @p3='?' (DbType = Guid), @p4='?' (DbType = Guid)], CommandType='Text', CommandTimeout='30']
DELETE FROM "NetworkUsers"
WHERE "Id" = @p0;
INSERT INTO "NetworkUsers" ("Id", "CreatedOn", "NetworkId", "UserProxyId")
VALUES (@p1, @p2, @p3, @p4);
< /code>
Я не понимаю, почему другая сущность удаляется. < /p>
Я набросаю сценарий: < /p>
User A and User B, with Network C and Network D
User A joins Network C: Creates a NetworkUser(A, C)
User B joins Network C: Creates a NetworkUser(B, C), but deletes NetworkUser(A, C) (???), but leaves NetworkUser(A, D) and NetworkUser(B, D) alone (They already existed before)
< /code>
Иностранные ключи разные (((A, C) и (A, D)), но они все еще удаляются.
Я пробовал Chatgpt, он не знает. < /p>
Как я могу исправить эту ошибку? происходит, то есть удаление также не происходит.// ...
public NetworkUser Create(NetworkUser networkUser)
{
_context.NetworkUsers.Add(networkUser);
Save();
return networkUser;
}
// ...

public abstract class BaseRepository(DataContext context) : IBaseRepository
{
// I know this is not great, but it is not my problem right now (I think)
public bool Save()
{
var saved = context.SaveChanges();
return saved > 0;
}
}
< /code>
dto: < /p>
public class CreateNetworkUserDto
{
}
< /code>
dataContext: < /p>
// ...
modelBuilder.Entity()
.HasKey(nu => nu.Id);
modelBuilder.Entity()
.HasOne(n => n.Network)
.WithMany(nu => nu.NetworkUsers)
.HasForeignKey(n => n.NetworkId);
modelBuilder.Entity()
.HasOne(u => u.UserProxy)
.WithMany(nu => nu.NetworkUsers)
.HasForeignKey(u => u.UserProxyId);
// ...
< /code>
Редактировать: вот вывод после регистрации объектов, отслеживаемых < /p>
// This is my new networkUser object
{
"Id": "7715be14-15dd-4229-a7d6-f49895f36021",
"NetworkId": "01966708-ac6e-7563-ba65-545a74083d03",
"UserProxyId": "019663a3-97cf-7ad5-96b8-b7dfc3e8309f",
"UserProxy": null,
"Network": null,
"CreatedOn": "2025-04-30T08:23:15.9306611Z",
"NetworkUserAccesses": [],
"NetworkUserRoles": []
}
< /code>
// This is the result of the tracked entities
[
{
"Entity": "NetworkUser",
"State": "Deleted",
"Values": {
"Id": "ff881fab-018d-40ae-b012-db188e976637",
"CreatedOn": "2025-04-30T08:01:35.359504Z",
"NetworkId": "01966708-ac6e-7563-ba65-545a74083d03",
"UserProxyId": "0196647c-1915-75b0-bbb4-1e5f4f73ee7c"
}
},
{
"Entity": "UserProxy",
"State": "Unchanged",
"Values": {
"Id": "019663a3-97cf-7ad5-96b8-b7dfc3e8309f",
"CreatedOn": "0001-01-01T00:00:00",
"Email": "[email protected]",
"FirstName": "Admin",
"ImageUrl": "...",
"IsDefault": true,
"LastName": "Noodle",
"Password": "iFi4dhCm/Ag0ALLDdMzRV2pqnTCprF2/VSgydCAOBNKKWXG8iroQVvBF9eQIKSQB",
"UserId": "019663a3-97db-739e-98b5-d49e52936cce",
"Username": "Admin"
}
},
{
"Entity": "Network",
"State": "Unchanged",
"Values": {
"Id": "01966708-ac6e-7563-ba65-545a74083d03",
"CreatedOn": "2025-04-25T14:49:41.906767Z",
"Description": "Noods!",
"ImageUrl": null,
"IsPublic": true,
"IsSystemProtected": false,
"Name": "Noodleman"
}
},
{
"Entity": "NetworkAccess",
"State": "Unchanged",
"Values": {
"NetworkId": "01966708-ac6e-7563-ba65-545a74083d03",
"AccessId": "019663a3-979f-7c1d-9d0d-0bb9ca4ed3f2",
"IsRequired": true,
"IsSystemProtected": false
}
},
{
"Entity": "Access",
"State": "Unchanged",
"Values": {
"Id": "019663a3-979f-7c1d-9d0d-0bb9ca4ed3f2",
"Description": "Allows Network to Access User\u0027s Lastname",
"IsSystemProtected": true,
"Name": "Access Lastname"
}
},
{
"Entity": "NetworkAccess",
"State": "Unchanged",
"Values": {
"NetworkId": "01966708-ac6e-7563-ba65-545a74083d03",
"AccessId": "019663a3-979f-7e29-81af-8914d5b17900",
"IsRequired": true,
"IsSystemProtected": false
}
},
{
"Entity": "Access",
"State": "Unchanged",
"Values": {
"Id": "019663a3-979f-7e29-81af-8914d5b17900",
"Description": "Allows Network to Access User\u0027s Firstname",
"IsSystemProtected": true,
"Name": "Access Firstname"
}
},
{
"Entity": "NetworkAccess",
"State": "Unchanged",
"Values": {
"NetworkId": "01966708-ac6e-7563-ba65-545a74083d03",
"AccessId": "019663a3-979f-7edb-a59a-85ce82c09aed",
"IsRequired": false,
"IsSystemProtected": false
}
},
{
"Entity": "Access",
"State": "Unchanged",
"Values": {
"Id": "019663a3-979f-7edb-a59a-85ce82c09aed",
"Description": "Allows Network to Access User\u0027s Email",
"IsSystemProtected": true,
"Name": "Access Email"
}
},
{
"Entity": "User",
"State": "Unchanged",
"Values": {
"Id": "019663a3-97db-739e-98b5-d49e52936cce",
"CreatedOn": "0001-01-01T00:00:00"
}
}
]



Подробнее здесь: https://stackoverflow.com/questions/795 ... -a-new-one
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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