CaseRepository.csでboolメソッドを使用してケースを追加しようとすると、そのケースのオーナー(ケースを作成した人)を特定するためにユーザーをケースオブジェクトに割り当てます。私はパラメータとして渡している既存のユーザーですが、それを割り当てるために、新しいUserオブジェクトをテーブルに追加しようとしますか?EF - 既存のオブジェクトを使用する代わりに新しいオブジェクトを追加しようとしていますか?
要するに、ユーザーがケースを作成し、そのケースをユーザーに割り当てるようにしようとしています。
MembershipUserをUserオブジェクトにマッピングする理由は、EF(コードファースト)がCRUD操作に使用できるようにするためです。
// CaseController.cs
[AuthWhere(AuthorizeRole.Developer)]
[HttpPost]
public ActionResult Create(CreateCaseViewModel model)
{
var success = false;
string message;
User user = Mapper.Map<MembershipUser, User>(_membershipService.GetUserByUserName(User.Identity.Name));
Case createCase = _caseService.CreateCase(model.Topic, model.Message);
bool addCase = _caseService.AddCase(createCase, user);
if(!addCase)
{
message = ControllerResources.CaseCreateFail;
}
else
{
success = true;
message = ControllerResources.CaseCreateSuccess;
}
return Json(new
{
Success = success,
Message = message,
Partial = RenderPartialViewToString("List", GetCases)
});
}
// RepositoryBase.cs
public class RepositoryBase<T> : IRepository<T> where T : class
{
public IDbContext Context { get; private set; }
public IDbSet<T> ObjectSet { get; private set; }
public RepositoryBase(IDbContext context)
{
Contract.Requires(context != null);
Context = context;
if (context != null)
{
ObjectSet = Context.CreateDbSet<T>();
if (ObjectSet == null)
{
throw new InvalidOperationException();
}
}
}
[ContractInvariantMethod]
private void Invariant()
{
Contract.Invariant(Context != null);
Contract.Invariant(ObjectSet != null);
}
public IRepository<T> Add(T entity)
{
ObjectSet.Add(entity);
return this;
}
public IRepository<T> SaveChanges()
{
Context.SaveChanges();
return this;
}
}
// CaseRepository.cs
public class CaseRepository : RepositoryBase<Case>, ICaseRepository
{
public CaseRepository(IDbContext context)
: base(context)
{
Contract.Requires(context != null);
}
public bool AddCase(Case @case, User user)
{
@case.User = user;
ObjectSet.Add(@case);
Context.SaveChanges();
return true;
}
}
http://www.codeproject.com/Articles/318820/ASP-NET-MVC-3-0-JqGrid-Unit-Of-Work-Repository-EFおよびhttp:// weblogsに記載されている同様のクラス。 asp.net/dwahlin/archive/2012/03/04/new-pluralsight-course-building-asp-net-mvc-apps-with-ef-code-first-html5-and-jquery.aspx –