두 개의 테이블이 있으며 접합 테이블을 만들 수 있습니다. 이 매핑이 있습니다.NHibernate. 따르다. 접합 테이블에 복합 기본 키 설정
public UsertMap()
{
Table("Users");
Id(x => x.Id, map => map.Generator(Generators.Assigned));
Property(x => x.FirstName, map => map.NotNullable(true));
Property(x => x.LastName, map => map.NotNullable(true));
Property(x => x.Role, map => map.NotNullable(true));
Bag(x => x.Projects, map =>
{
map.Table("UsersInProject");
map.Cascade(Cascade.None);
map.Access(Accessor.Field);
map.Key(u => u.Column("UserId"));
}, a => a.ManyToMany(x => x.Column("ProjectId")));
}
및
public ProjectMap()
{
Table("Projects");
Id(x => x.Id, map => map.Generator(Generators.Assigned));
Property(x => x.SubmissionDate, map =>map.NotNullable(true));
Property(x => x.QuotesubmissionDate, map => map.NotNullable(true));
Bag(x => x.ProjectUsers, map =>
{
map.Table("UsersInProject");
map.Cascade(Cascade.None);
map.Access(Accessor.Field);
map.Key(u => u.Column("ProjectId"));
}, a => a.ManyToMany(x => x.Column("UserId")));
}
그것은 1 차 키 *, 복합 키 {ProjectId, 사용자 아이디} 내가 잘못 뭐하는 거지
을 설정하지 않고 접합 테이블 만 만들어?
고지.
* 내가 나에 관한이 코드에 대해 들었을 때 나는 그것을 이해하는 것이 이상했다.
CONSTRAINT pk PRIMARY KEY ("ProjectId" , "UserId"),
EDIT2 :
CREATE TABLE "UsersInProject"
(
"ProjectId" uuid NOT NULL,
"UserId" uuid NOT NULL,
CONSTRAINT fk28998796db607aa2 FOREIGN KEY ("UserId")
REFERENCES "Users" ("Id") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk28998796f9a8d344 FOREIGN KEY ("ProjectId")
REFERENCES "Projects" ("Id") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE "UsersInProject"
OWNER TO test;
가 나는 또한 다음 거기에 같은 라인 expece 것이다 : (더 나은 뷰를)
drop table if exists "UsersInProject" cascade;
create table "UsersInProject" (
"ProjectId" uuid not null,
"UserId" uuid not null
);
alter table "UsersInProject"
add constraint FK28998796DB607AA2
foreign key ("UserId")
references "Users";
alter table "UsersInProject"
add constraint FK28998796F9A8D344
foreign key ("ProjectId")
references "Projects";
생성 된 테이블이 SQL 코드에 의해 생성된다
의미 : "기본 키로 설정하지 않고 복합 키 {ProjectId, UserId}"가 아닌가요? –
질문에 답변했습니다. – Turambar
그리고 뭐가 문제입니까? –