나는이 두 테이블을 가지고 있습니다.
다른 테이블에 새 행을 만들 때 테이블 업데이트
나는 다음 계정 테이블에 새 행을 추가 한 다음 사용하여 클라이언트 테이블에 계정 아이디를 업데이트하려고 :
public static void AddAccount()
{
var db = new DALEntities();
Account account = new Account();
db.Account.Add(account);
db.SaveChanges();
var newid = account.AccountId;
if (MySession.Current._ClientId != null)
{
Client client = GetClientByID((int) MySession.Current._ClientId);
client.AccountId = newid;
db.SaveChanges();
}
}
I하여 클라이언트를 얻으려면 다음을 사용
를public static Client GetClientByID (int id)
{
var db = new DALEntities();
return db.Client.SingleOrDefault(d => d.ClientID == id);
}
새 행이 Account 테이블에 추가되고 올바른 새 항목 AccountId와 올바른 Client 개체를 반환합니다. 그러나 Client 테이블은 갱신하지 않습니다. 나는
db.Entry(client).State = EntityState.Modified;
을 사용하려고하지만이 오류가있어 : 나는 그것을 저장하기 전에 클라이언트 모델을 업데이트 할 수있는 방법
an entity object cannot be referenced by multiple instances of ientitychangetracker
합니다.
public static Client GetClientByID (int id)
{
var db = new DALEntities();
return db.Client.SingleOrDefault(d => d.ClientID == id);
}
당신이 같은 맥락에서 두 개의 인스턴스를 받고 있는지 확인해야 작동하기 위해서는 :
데이터베이스 구조가별로 의미가 없습니다. 이는 계정이 둘 이상의 클라이언트에 속할 수 있지만 각 클라이언트는 하나의 계정 만 가질 수 있음을 제안합니다. – pquest
'GetClientByID'는 정확히 어떻게 작동합니까? 다른 db 컨텍스트를 사용하여 '클라이언트'를 검색하는 경우 작동하지 않을 것입니다. –
상호 참조 오류가 있습니다. 두 테이블 모두 Account.Accountid -> Client.AccountId 및 Client.ClientId -> Account.ClientId를 통해 서로 참조했습니다. 여러 인스턴스를 저장할 때 오류가 발생합니다. – agentpx