1

最初にEF 4.1とデータベースを使用してWebサイトに取り組んでいます。aspnet_Users特に主キーとして Guid を使用している aspnet テーブルも使用しています。aspnet_Usersしたがって、私のカスタム User テーブルには、 IDの外部キーである主キーとして Guid もあります。

最近、主キーとして Guid を使用するのは悪い考えだと読みましたnewsequentialid()

Sql Server Management Studio を使用して、すべての主キーのデフォルト値を に更新し、edmx デザイナーで にnewsequentialid()設定StoreGeneratedPatternしました。Identity

ただし、オブジェクト (たとえばItem、Guid プライマリ キーを持つオブジェクト) を追加しようとすると、その ID はデータベースで空 (すべて 0) のままになります。

public void CreateItem()
{
    using (var uof = new UnitOfWork())
    {
        Item item = new Item();
        itemRepo.Add(item);
        uof.Commit();
    }
}

そして追加方法:

public class RepositoryBase<TObject> where TObject : IEntity
{
    protected CavalenaEntities entities
    {
        get { return UnitOfWork.Current.Context; }
    }

    public void Add(TObject entity)
    {
        entities.Entry(entity).State = System.Data.EntityState.Added;
    }
}

私は何かを忘れましたか?データベースの主キーのデフォルト値を設定しましたがDefault Value、edmx デザイナーのプロパティはまだNone. 正常ですか?

別の解決策は、 Guid の代わりに int を主キーとして使用することですが、カスタム User テーブルとaspnet_UsersGuid を使用する との間のリンクをどのように行うことができますか?

どうもありがとう !

4

2 に答える 2

0

NEWID()シーケンス識別子が必要でない限り、使用はまったく問題ありません。Guidしかし、おそらく/は必要ありません。 orと ID または SQL シーケンス オブジェクトuniqueidentifierを使用できます。intbigint

于 2015-04-13T15:08:04.517 に答える