最初に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_Users
Guid を使用する との間のリンクをどのように行うことができますか?
どうもありがとう !