ログインおよび従業員データベースへの変更は正常にコミットされましたが、オブジェクトコンテキストの更新中にエラーが発生しました。 ObjectContextが矛盾した状態になっている可能性があります。内部例外メッセージ:Evalv.Services.employedetailデータベースへの変更が正常にコミットされました... ObjectContextが矛盾した状態になる可能性があります
public partial class login
{
public string password { get; set; }
public string status { get; set; }
public bool active { get; set; }
public string emailId { get; set; }
public int employeeId { get; set; }
}
public partial class employedetail
{
public employedetail()
{
this.logins = new HashSet<login>();
}
public int employeeId { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
public string emailId { get; set; }
public virtual ICollection<login> logins { get; set; }
}
方法について
エンティティフレームワーククラスは、データ
//employedetail e and login l are entity objects with data passed to below method.
public string RegisterUser(employedetail e , login l)
{
try
{
using (EvalvEntities context = new EvalvEntities())
{
context.employedetails.Add(e);
context.logins.Add(l);
if (context.SaveChanges() > 0)
{
return "Registered";
}
else
{
return "Not Registered";
}
}
}
catch(Exception ex)
{
return "Error :" + ex;
}
}
を保存するエンティティタイプのフィールド/プロパティログインを設定することができません。
注::同じ例外についての他のいくつかの投稿は、これがプリマの不在のためである可能性があると主張したキーを押します。しかし、私はemployedetail
とlogin
テーブルの両方にプライマリキーの&の外部キーを持っています。何がうまくいかないか分かりません。エンティティオブジェクトをコンテキストに追加するたびにcontext.SaveChanges()
と呼びますか?例えば
context.employedetails.Add(e);
context.SaveChanges();
context.logins.Add(l);
context.SaveChanges();
またはこれを行うに任意のより良い方法はありますか? 何か助けていただければ幸いです。
UPDATE:私は、クエリに&例外を以下のGOT)(context.savechangesために生成されたクエリをログを
INSERT [dbo].[employedetails]([employeeId], [firstName], [middleName], [lastName], [emailId])
VALUES (@0, @1, NULL, @2, @3,)
-- @0: '4567' (Type = Int32)
-- @1: 'sam' (Type = String, Size = 255)
-- @2: 'anderson' (Type = String, Size = 255)
-- @3: '[email protected]' (Type = String, Size = 255)
-- Executing at 30-12-2016 12:17:27 AM +05:3
-- Completed in 1 ms with result: 1
INSERT [dbo].[login]([employeeId], [emailId], [password], [status], [active])
VALUES (@0, @1, @2, NULL, @3)
-- @0: '4567' (Type = Int32)
-- @1: '[email protected]' (Type = String, Size = 255)
-- @2: '123456' (Type = String, Size = 255)
-- @3: 'False' (Type = Boolean)
-- Executing at 30-12-2016 12:17:28 AM +05:30
-- Completed in 2 ms with result: 1
例外スロー:EntityFramework.SqlServer.dll
に 'System.InvalidOperationExceptionが'
ログインオブジェクト 'l'を保存するときの正確な内容は? Esp。その 'employeeId'の価値は面白いです。 –
@GertArnoldログインオブジェクトlのいくつかの内容は、employetailsから派生します。object.i.e - adoptetails&loginは、両方とも同じemployeeId、emailId **を挿入時に持ちます。 – sujai
'login'は主キーを持っていないようです。マッピングを表示できますか? –