كيفية تصميم قاعدة البيانات باستخدام محتوى مستخدم قابل للتحرير/إصدار باستخدام التعليمات البرمجية أولاً؟

StackOverflow https://stackoverflow.com/questions/3865904

سؤال

أقوم بتطوير صفحة حيث سيتمكن المستخدمون من إضافة المحتوى الحالي وتعديله ، فهي ليست wiki لكل sé ولكن نوعًا ما ، مثل قدرات التحرير.

أنا أعمل مع EF4 والرمز الجديد First Code في أحدث CTP ، إذن ما هو أفضل تصميم فئة لهذا الغرض؟

تخميني الحالي هو شيء من هذا القبيل:

public class VersionableText
{
   public int Id { get; set; }
   public DateTime Date{ get; set; }
   public String Text{ get; set; }

   public virtual User User{ get; set; }  
}

ثم استخدمه في كياناتي الأخرى ، في سياق حتى يكون الأمر كذلك

public class Question
{
   public int Id {get; set;}
   public virtual VersionableText Title {get; set;}
   public virtual VersionableText Content{get; set;}
   ...
}

لكنني لست مقتنعًا حقًا به .. بما أن لدي أيضًا علامات ، أو القدرة على حذف/غير حذف ، أو التراجع ، وما إلى ذلك ، هل تعرف كيفية تصميم الفئات التي تساعدني بشكل صحيح في إصدار المحتوى بشكل صحيح؟

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

المحلول

تهدف إلى البساطة

السؤال الرئيسي الذي تحتاج إلى طرحه على نفسك هو هل ستعرض جميع الإصدارات طوال الوقت أو أحدث إصدار معظم الوقت وكلها عند الطلب؟ على غرار هنا. معظم الوقت لا ترى سوى أحدث إصدار.

إذا كان هذا هو نفسه مع حالتنا ، فلن أهتم كثيرًا بهذه الإصدارات. ولكن عندما تريد أن تُريهم جميعًا على تصميم صف صفحة واحدة أكثر أو أقل يعتمد على الطريقة التي ترغب في إظهارها. هل سيظهر تغييرات وأشياء من هذا القبيل.

أفضل أن أحصل على فصل مثل:

public class Question
{
    public int Id { get; set; }
    public QuestionStatus Status { get; set; }
}

public class QuestionHistory
{
    public Question Question { get; set; }

    public string Title { get; set; }
    public string Content { get; set; }

    public User Author { get; set; }

    public DateTime Created { get; set; }

    public IList<Tag> Tags { get; set; }
}

وعندما سأعرضهم جميعًا ، سأعيد فقط قائمة من هذه الطلبات LastChange. لقد أضفت قائمة العلامات لكنني لم أضف أيًا من الخصائص الأخرى المتعلقة بالعملية المتعلقة بحالة السؤال. يعتمد بشكل كبير على تسلسل العملية.

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