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 : // 웹 로그에 설명 된 것과 유사한 클래스입니다. asp.net/dwahlin/archive/2012/03/04/new-pluralsight-course-building-asp-net-mvc-apps-with-ef-code-first-html5-and-jquery.aspx –