これは隠された規則に関するものですが、多対多の関係を既存のデータベースにマップしようとすると、常にエラーが発生します。私はデシベルで通常の3つのテーブルを持ってEF4 CTP5データベースファースト+多対多関係(エラー)
[Table("ALRole", SchemaName = "AL")]
public class Role
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
[Table("ALUser", SchemaName = "AL")]
public class User
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
:ここ は最も単純な例である最初の二つは明白であり、第三は、このスクリプトを使用して作成されます
CREATE TABLE AL.ALUsersRoles
(
RoleID int NOT NULL,
UserID int NOT NULL,
CONSTRAINT PK_ALUserRole PRIMARY KEY(RoleID, UserID),
CONSTRAINT FK_ALUserRole_RoleID FOREIGN KEY(RoleID) REFERENCES AL.ALRole(ID),
CONSTRAINT FK_ALUserRole_UserID FOREIGN KEY(UserID) REFERENCES AL.ALUser(ID)
)
今、私がしようこのようなコードで、多対多の関係をマップ:
// ...I'm in the EntityTypeConfiguration-derived class (User)
HasMany(u => u.Roles)
.WithMany(r => r.Users)
.Map(m =>
{
m.MapLeftKey(u => u.ID, "UserID");
m.MapRightKey(r => r.ID, "RoleID");
ToTable("ALUsersRoles", "AL");
});
私は、このコードのすべてのpossibileの組み合わせとバリエーションを試してみましたが、私は常にエラーを取得:
{"Invalid column name 'Name'.\r\nInvalid ...and so on...
だから、正しく作成されていないテーブルである必要があります。 アイデア事前 アンドレア P.S:私は私のコードの一部をストリップダウン、ので、多分いくつかの小さなタイプミスがある可能で おかげで...
解決しましたか? –
これはコードではなく、データベースではありません。 – gunwin