目前,我需要注册一个新用户,同时创建一个“帐户组合”记录,然后将他分配给该组合。
所以,3个数据库写入。
我有一个Twitter-Bootstrap UI,使用MVC4,然后转到服务,逻辑和数据访问层,它使用Entity Framework 5保存到SQL Server。
目前,当用户点击“注册”时,我创建了一个“用户”数据传输对象,该对象基本上包含有关用户的详细信息。然后我创建一个'Portfolio'对象,它只有'Description'和'Id'。我在我的'User'服务类中创建了一个名为'RegisterNewUserWithPortfolio'的服务方法。它需要两个对象。然后,它在我的UserLogic中调用逻辑服务类方法,具有相同的名称和参数。
然后在UserData类中调用“Save”方法,将UserDto传递给UserDto,后者返回刚刚保存的用户的新Id。
public class PersonDto
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Firstname { get; set; }
public string Surname { get; set; }
public string Email { get; set; }
}
然后调用AccountPortfolioData类中的Save方法,将其传递给保存的PortfolioDto,并再次返回Id。
然后我在UserData类中调用一个名为'AssignUserToPortfolio'的方法,获取UserId和PortfolioId ......然后保存。
我现在有一个新用户,链接到投资组合。
我不能在EF交易中这样做,因为我正在调用不同的数据保存类(因为我的每个实体都有它自己的类,以帮助它们分开并更容易管理)。
首先,我做得对吗?有没有更好的办法? 如果是这样,有没有办法可以将整组调用放入交易中?
注意,我的Dto对象只是用于在层之间传递数据的自定义哑对象。我也没有将EF模型传递给UI。我试图将它全部分层并分开。
答案 0 :(得分:0)
问题不是很明确,但我从理解的最简单的方法来为您的用户和投资组合类映射ER关系
因此
Public class User{
//
//
//
public virtual ICollection<Portfolio> Portfolios
}
Public Class Portfolio{
//
public int UserId{get; set;}
[ForeignKey("UserId")
public virtual User user{get; set}
}
实体框架会自动映射关系。希望这能让你开始。