قم بتخطيط عمود ليكون هوية في ديسيبل
-
25-09-2019 - |
سؤال
على الرغم من أنني قمت بتمييز عمود الهوية الخاص بي مع .Identity()
, ، مخطط قاعدة البيانات الذي تم إنشاؤه ليس لديه IDENTITY
تعيين إلى True ، مما يعطيني المشاكل عندما أضيف السجلات. إذا قمت بتحرير مخطط قاعدة البيانات يدويًا (في استوديو إدارة SQL) للحصول على Id
عمود ملحوظ IDENTITY
, ، كل شيء يعمل كما أريد - لا يمكنني جعل EF يفعل ذلك بنفسه.
هذا هو رسم الخرائط الكامل الخاص بي:
public class EntryConfiguration : EntityConfiguration<Entry>
{
public EntryConfiguration()
{
Property(e => e.Id).IsIdentity();
Property(e => e.Amount);
Property(e => e.Description).IsRequired();
Property(e => e.TransactionDate);
Relationship(e => (ICollection<Tag>)e.Tags).FromProperty(t => t.Entries);
}
}
بينما أستخدم EF لبناء قاعدة البيانات وإعادة بناءها لاختبار التكامل ، أحتاج حقًا إلى القيام بذلك تلقائيًا ...
تعديل:HM ... في تعليق ، طُلب مني إعطاء رمز كافي لتنفيذ هذا ، لذلك قمت بقطع الرمز الخاص بي في تطبيق وحدة تحكم (لذلك لن تحتاج إلى جميع فصولي ...) وفجأة نجحت فقط . أظن أنني كنت أنسى بعض الاتصالات في مكان ما ، على الرغم من أنني لم أتمكن من معرفة مكان.
سأقوم بنشر رمز حل العمل في إجابة على هذا المنشور ، في حال جاء شخص آخر يبحث عنه.
المحلول
تشغيل هذا الرمز يحل المشكلة. أعتقد أنني يجب أن نسيت خطوة في مكان ما ، لذلك إذا كان لديك نفس المشكلة ، فتأكد من قيامك بكل هذه الأشياء:
var connection = GetUnOpenedSqlConnection(); // Any connection that inherits
// from DbConnection is fine.
var builder = new ContextBuilder<ObjectContext>(); // I actually had my own class
// that inherits from
// ObjectContext, but that was
// not the issue (I checked).
builder.Configurations.Add(EntryConfiguration); // EntryConfiguration is the
// class in the question
var context = builder.Create(connection);
if (context.DatabaseExists())
{ context.DeleteDatabase(); }
context.CreateDatabase();