변경할 수없는 고객으로부터 데이터베이스 스크립트를 받았습니다. 내가 EntityFramework 데이터베이스 첫 번째 방법을 사용하는 스크립트에서 개체를 생성하려고 할 때 , 참조 관계가 클래스에서 누락 : EF 데이터베이스 첫 번째 방법에서 생성DataBase의 첫 번째 접근 방식에서 Entity Framework 탐색 속성이 누락되었습니다.
CREATE TABLE agency(
tenant_sktmp INT identity(1,1) not null,
rec_create_tmstptmp DATETIME NOT NULL,
rec_update_tmstptmp DATETIME NOT NULL,
rec_created_bytmp VARCHAR(50),
rec_updated_bytmp VARCHAR(50),
env_nametmp VARCHAR(100) NOT NULL,
product_app_nametmp VARCHAR(100) NOT NULL,
tenant_idtmp VARCHAR(50) NOT NULL,
tenant_nametmp VARCHAR(100) NOT NULL
PRIMARY KEY (tenant_sktmp)
)
CREATE TABLE usertmp(
user_sktmp INT identity(1,1) not null,
rec_create_tmstptmp DATETIME NOT NULL,
rec_update_tmstptmp DATETIME NOT NULL,
rec_created_bytmp VARCHAR(50),
rec_updated_bytmp VARCHAR(50),
user_nametmp VARCHAR(100) NOT NULL,
tenant_idtmp VARCHAR(50) NOT NULL,
env_nametmp VARCHAR(100) NOT NULL,
user_pwd_hashtmp VARCHAR(255) NOT NULL,
user_first_nametmp VARCHAR(200) NOT NULL,
user_last_nametmp VARCHAR(200) NOT NULL,
user_hire_datetmp DATETIME,
user_birth_datetmp DATETIME,
user_staff_idtmp VARCHAR(50),
user_santrax_idtmp VARCHAR(50),
user_guidtmp VARCHAR(128),
PRIMARY KEY (user_sktmp)
)
CREATE UNIQUE INDEX tmp12 ON agency(tenant_idtmp, env_nametmp)
CREATE INDEX ref64tmp ON agency(env_nametmp)
CREATE UNIQUE INDEX user_key1qqq ON usertmp(user_nametmp, env_nametmp, tenant_idtmp)
CREATE INDEX ref56qq ON usertmp(tenant_idtmp, env_nametmp)
CREATE INDEX ref67qq ON usertmp(env_nametmp)
ALTER TABLE usertmp ADD CONSTRAINT Reftenant6tmp
FOREIGN KEY (tenant_idtmp, env_nametmp)
REFERENCES agency(tenant_idtmp, env_nametmp)
클래스입니다 다음과
public partial class usertmp
{
public int user_sktmp { get; set; }
public System.DateTime rec_create_tmstptmp { get; set; }
public System.DateTime rec_update_tmstptmp { get; set; }
public string rec_created_bytmp { get; set; }
public string rec_updated_bytmp { get; set; }
public string user_nametmp { get; set; }
public string tenant_idtmp { get; set; }
public string env_nametmp { get; set; }
public string user_pwd_hashtmp { get; set; }
public string user_first_nametmp { get; set; }
public string user_last_nametmp { get; set; }
public Nullable<System.DateTime> user_hire_datetmp { get; set; }
public Nullable<System.DateTime> user_birth_datetmp { get; set; }
public string user_staff_idtmp { get; set; }
public string user_santrax_idtmp { get; set; }
public string user_guidtmp { get; set; }
}
public partial class agency
{
public int tenant_sktmp { get; set; }
public System.DateTime rec_create_tmstptmp { get; set; }
public System.DateTime rec_update_tmstptmp { get; set; }
public string rec_created_bytmp { get; set; }
public string rec_updated_bytmp { get; set; }
public string env_nametmp { get; set; }
public string product_app_nametmp { get; set; }
public string tenant_idtmp { get; set; }
public string tenant_nametmp { get; set; }
}
두 클래스간에 관계가 누락 된 것을 볼 수 있습니다. 대리인 테이블을 참조하는 usertmp 테이블에 외래 키가 있으므로 관계 배송은 유지됩니다.
SQL 스크립트는 변경할 수 없습니다. 도움이 될 것입니다.
Entity Framework는 키 필드를 통한 관계 만 지원합니다. tenant_idtmp가 INT FK로 보이지 않습니다. –
정수 인 경우에도 동일한 문제가 발생합니다. –
tenant_idtmp가 연결되는 필드라고 가정합니다. 그것들이 문자열이라는 점에서 차이가 없다. 문제는 그것이 대행자 클래스 (tenant_sktmp)의 기본 키가 아니기 때문에 [EF는 관계를 설정할 수 없다.] (http://stackoverflow.com/questions/13498795/entity -framework-code-first-mapping-foreign-key-without-foreign-key)를 사용합니다. 그러나 조인을 할 수 있습니다. –