2016-04-17 7 views
0

私は、PostgreSQLには、次の表を作成しています:Entity Framework 5 CodeFirst - "各テーブルの列名は一意である必要があります。

create table dbo.user_ratings (
user_id int not null, 
user_rated_id int not null, 
value decimal not null, 
status_id int not null, 
created_at timestamp with time zone not null, 
updated_at timestamp with time zone null, 
user_comment text null, 

primary key (user_id, user_rated_id), 
foreign key (user_id) references dbo.users(id), 
foreign key (status_id) references dbo.status(id), 
foreign key (user_rated_id) references dbo.users(id)); 

CodeFirstを使用してテーブルをマッピングする場合、私は次のことをやっている:

[Table("user_ratings", Schema="dbo")] 
public class UserRating { 

    [Key, Column("user_id", Order = 0)] 
    public int UserId { get; set; } 
    public virtual User User { get; set; } 

    [Key, Column("user_rated_id", Order = 1)] 
    public int UserRatedId { get; set; } 
    public virtual User UserRated { get; set; } 

    [Column("status_id")] 
    public int StatusId { get; set; } 
    public virtual Status Status { get; set; } 

    public decimal Value { get; set; } 

    [Column("user_comment")] 
    public string UserComment { get; set; } 

    [Column("created_at")] 
    public DateTime CreatedAt { get; set; } 

    [Column("updated_at")] 
    public DateTime UpdatedAt { get; set; } 
} 

さて、これまでのところ、とても良いです。クエリを実行しようとすると、次のエラーが表示されます。

Column names in each table must be unique. Column name 'User_Id' in table 'user_ratings' is specified more than once. 

何が問題なのですか。列user_idに関連するマッピングを削除すると、それは過ぎていますが、正しくはありません。誰か助けてくれますか?

ありがとうございました!

+0

Sqlサーバのproviederでは '[Key、Column(" user_id "、Order = 0)、ForeignKey(" User ")]'にする必要があります。 PostgreSQLプロバイダはそれに対処できますか? –

+0

「Status」と同じです。 –

+0

例外を深く確認すると、sqlserverエラーであることがわかりました。 PostgreSQLをデータベースとして使用していてもSQL Serverエラーが発生するのはなぜですか? – Kiwanax

答えて

0

このエラーはSQLServerデータベースにのみ関連しているようです。私はまだWeb.config/App.configにいくつかのSQLServer設定を持っていたので、このエラーが出ていたのです。 SQLServer構成がなければ、エラーはなくなります。