C# 使用实体框架6将父实体与数据库中现有的子实体连接起来
我正在使用Entity Framework 6设计和使用一个数据库,该数据库有一个子用户表,如下所示:C# 使用实体框架6将父实体与数据库中现有的子实体连接起来,c#,database,entity-framework,entity-framework-6,C#,Database,Entity Framework,Entity Framework 6,我正在使用Entity Framework 6设计和使用一个数据库,该数据库有一个子用户表,如下所示: public class User { public long Id { get; set; } public string UserName { get; set; } public string CompanyId { get; set; } } public class Order { public long OrderId { get; set
public class User
{
public long Id { get; set; }
public string UserName { get; set; }
public string CompanyId { get; set; }
}
public class Order
{
public long OrderId { get; set; }
public int ItemCount { get; set; }
public DateTime OrderDate{ get; set; }
...
public virtual User User { get; set; }
}
以及一个如下所示的订单表:
public class User
{
public long Id { get; set; }
public string UserName { get; set; }
public string CompanyId { get; set; }
}
public class Order
{
public long OrderId { get; set; }
public int ItemCount { get; set; }
public DateTime OrderDate{ get; set; }
...
public virtual User User { get; set; }
}
在我的数据库中,表示订单表中用户表的字段是User\u Id
现在我的问题(可能是数据库设计问题)是,在数据库中创建新用户和订单之前,我想检查用户是否存在,如果存在,则将其链接到新订单,而不是创建新用户。我有一个方法,可以在用户不存在时添加新用户,并返回创建的或现有用户的Id
字段值
如何创建一个新的Order实例,该实例采用Id
值而不是User
对象来避免重复用户,或者有更好的方法来处理此用例
我试图返回对象而不是用户ID,但它在用户表中保存了一个新用户不确定这是否解决了您的问题。但这种方法应该确保您不会创建另一个用户对象,而是从数据库中检索用户对象
public class UserHandler
{
//Use dbcontext instead to get a user list
public List<User> UserList = new List<User>();
public void handleUserList(int id)
{
User oneUser = UserList.FirstOrDefault(n => n.id==id);
if (oneUser.Equals(null))
{
oneUser = new User();
//Functionality to save the user information
}
}
}
我可以检查用户是否存在,或者创建一个新用户。问题是,每当我保存一个新订单时,它也会保存一个新用户,即使该用户存在(我发送一个包含id的用户,但无论如何都会创建一个新的用户),您应该在
user
类中拥有ICollection Orders
属性。