Почему, когда я пытаюсь добавить кейс с помощью метода bool в CaseRepository.cs, назначив пользователя к кейс-объекту, чтобы определить, какой пользователь является владельцем кейса (кто его создал?) - но когда япопытаться назначить его, затем попытаться добавить новый объект User в таблицу, хотя это уже существующий пользователь, которого я передаю в качестве параметра?
Короче говоря: я пытаюсь позволить пользователю создать делои назначьте этот случай пользователю.
Причиной отображения MembershipUser в объекте пользователя является включение 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;
}
}