سؤال

وكيف يمكنك إنشاء الأعمدة الثنائية في DB باستخدام باني مخطط دون سرعة الصوت و؟

وحتى هذه الليلة قررت أن يغوص دون سرعة الصوت. أرى الكثير من الأسئلة هنا والاستجابات كبيرة روب وغيرها الكثير. وأرى أن سرعة الصوت هو ORM، مع قوالب T4 يمكن أن تولد بعض الطبقات لطيفة وفعالة جدا من قاعدة بيانات موجودة.

ولكن، أريد أن تذهب في الاتجاه الآخر. لدي المجال غنية جدا، وتريد إنشاء بلدي الجداول مخصصا من المجال الخاص بي باستخدام دون سرعة الصوت والخيار RunMigrations.

وكل يعمل بشكل جيد للغاية (حتى كتب وظيفة بلدي ترقية () أن يكتشف إذا كان مصدر برنامج ديه التغييرات بناء على رقم المراجعة الجمعية، ثم يهاجر كافة التحديثات الكائن إلى DB - بقعة جميلة ويتسم بفعالية لصناعة السيارات في الارتقاء DB ).

ولكن، كيف لديك دون سرعة الصوت إنشاء أعمدة الثنائية؟ ربما أنا لا تستخدم على النحو المقصود (وأنا لا تستخدم سؤال أو SqlQuery، مجرد واجهة ينق من SimpleRepository). انظر أدناه (باستخدام المشترك "مقالات بوست" مثلا):

[SubsonicTable]
public class Post
{
    [SubSonicPrimaryKey]
    public Int32 PostID { get; set; }

    [SubSonicStringLength(1024)]
    public String Title { get; set; }

    [SubSonicLongString]
    public String Body { get; set; }

    [SubSonicStringLength(5)]
    public String? LangaugeCode { get; set; }

    public DateTime? Published { get; set; }

    public PostType PostType { get; set; }
    public Int32 PostTypeID
    {
        get
        {
            return this.PostType.GetHashCode();
        }
        set
        {
            Enum.Parse(typeof(PostType), value.ToString());
        }
    }

    public Byte[] Image { get; set; }
}

public enum PostType
{
    NotSet = 0
    ,BlogPost
    ,Comment
    ,Trackback
    ,Pingback
}

عند يحصل على حفظ هذا الكائن بوست، أو الاستعلام، عن طريق SimpleRepository، كان مفقودا عمودين: PostType (أو PostType نوع التعداد) وصورة (من نوع بايت [] مجموعة)

.

والآن، لقد وجدت الإختراق من بين والإجابة هنا أن شخصا ما نشر حول استخدام Int32 PostTypeID للالتفاف على قضية التعداد. هيا روب، يجب أن يكون دون سرعة الصوت قادرة على دعم أنواع التعداد لINT، والعودة منها. ..) وهذا هو السبب لدي PostTypeID، وهذا يحصل إنشاء ومكتوبة بشكل صحيح

وهنا مثال الأمر الذي يخلق الجدول الموضوع بالنسبة لي، وكذلك إدراج أول وظيفة:

Post p = new Post();
p.Title = "My Title";
p.Body = "The body of the post.";
p.PostType = PostType.BlogPost;

var repo = new SimpleRepository(SimpleRepositoryOptions.RunMigrations);
repo.Add(p);

ملحوظة: يجب عدم استخدام هذا الرمز في الإنتاج، كما RunMigrations لديها الكثير من الاستفسارات TSQL إضافية في الجولة الأولى

ويمكنك أن ترى من المثال أعلاه أن هذا سيخلق المشاركات الجدول إذا لم يكن موجودا، فضلا عن إنشاء الأعمدة.

ولكن، هذا لا يخلق العمودين المذكورة أعلاه: PostType ولا صورة

والأفكار؟ ويرجع الفضل في ذلك مسبقا.

هل كانت مفيدة؟

المحلول

وكان <م> يعتقد كان لدينا الشم ثنائي - تبين أنها لا تفعل خدعة. ولست بحاجة لإضافة هذا - الأفضل من ذلك إذا كنت لا تمانع في التفرع ما لدينا وإضافة هذا - كنت أحبك لذلك. تأخذ الغنائم في ملحقات لدينا الاشياء - تريد وزارة الدفاع ToDataTable () (على ما أظن) ...

إذا كنت لا تحصل على فرصة - سأضيف هذا عندما تزيد السرعة حتى SimpleRepo المقبل ...

نصائح أخرى

وركضت فقط في العمود ثنائي إصدار نفسي. إذا كان لديك التصحيح / إصلاح سأكون على استعداد لاختباره.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top