我定义了以下两个实体。A.
ResponseSeries
可以有一个相关的
TabletUserSession
这是一种相当直接的一对零或一关系。
public class ResponseSeries : TrackedEntity
{
public ResponseSeries()
{
Responses = new Collection<Response>();
}
public Int32 ResponseSeriesId { get; set; }
public virtual TabletUserSession TabletUserSession { get; set; }
public virtual ICollection<Response> Responses { get; set; }
}
和
public class TabletUserSession : TrackedEntity
{
public Int32 TabletUserSessionId { get; set; }
public Int32 ResponseSeriesId { get; set; }
public Int32? TabletId { get; set; }
public DateTime StartDate { get; set; }
public DateTime? ClosedDate { get; set; }
public virtual Tablet Tablet { get; set; }
public virtual ResponseSeries ResponseSeries { get; set; }
}
我这样配置映射:
public TabletUserSessionMap()
{
HasRequired(tus => tus.ResponseSeries).WithOptional(rs => rs.TabletUserSession);
}
当我尝试创建一个新的
响应系列
和一个新的
表t用户会话
因为它是这样的:
responseSeries.TabletUserSession = new TabletUserSession
{
StartDate = DateTime.Now,
TabletId = request.TabletId,
};
context.ResponseSeries.Add(responseSeries);
context.SaveChanges();
插入时引发错误
表t用户会话
因为EF尝试插入
ResponseSeriesId
进入
TabletUserSessionId
.
INSERT [dbo].[TabletUserSession]
([TabletUserSessionId],
[ResponseSeriesId],
[TabletId],
[StartDate],
[ClosedDate],
[Version],
[CreatedUserId],
[CreatedDate],
[LastUpdateUserId],
[LastUpdateDate])
VALUES (4404 /* @0 */, -- <--This is going into the wrong field!
0 /* @1 */,
9 /* @2 */,
'2014-03-06T13:30:03' /* @3 */,
NULL,
1 /* @4 */,
'801162722' /* @5 */,
'2014-03-06T13:30:03' /* @6 */,
'801162722' /* @7 */,
'2014-03-06T13:30:03' /* @8 */)
我在这里束手无策。我尝试过以各种方式更改映射,但我所能做的就是让它抛出不同的异常。我没有看到什么?