مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

محمدحسین فخرآوری

عضویت از 1393/04/06

مشکل در تولید مدل دیتابیس در core 2

  • چهارشنبه 11 مهر 1397
  • 12:35
تشکر میکنم

سلام
من مدل دیتابیس ایجاد میکنم با دستور -o و کلاس ها ایجاد می شود، ولی نام ستون های ریلیشنی تغیر می کند.
مثلا User - Role - UserRole
در جدول UserRole کلید های ریلیشنی بین User - Role را به نام IdUserNavigator درست می کند. در مدل بدون Core این ریلیشن ها با نام خود جدول درست می شد

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • چهارشنبه 11 مهر 1397
  • 15:10

سلام

دلیلش اینه که شما فقط navigation property رو تعریف میکنید.

وقتی EF به کد شما میرسه میفهمه باید رابطه ای ایجاد کنه، از اونجایی که شما مشخص نکردید کلید خارجی این رابطه رو، EF خودش اون رو برای شما میسازه.

دوم اینکه در روابط چند به چند دو طرفه نیاز به جدول واسطی هستش. اگر این رو هم شما نساخته باشید، EF براتون ایجاد میکنه و اسمش رو هم ترکیب دو جدول رابطه میذاره.

برای جلوگیری از این مشکل ها باید خودتون سمت کدتون اونها رو مدیریت کنید.

مثلا برای رابطه چند به چند کلاس واسط رو ایجاد کنید و کلید ها رو اونجا قرار بدید.

برای navigation propertyها باید کلید خارجیشون رو هم تعریف کنی که یکی از best practice های طراحی EF هستش.

public class Book
{
    public int BookId { get; set; }
    public string Title { get; set; }
    [ForeignKey("AuthorFK")]
    public Author Author { get; set; }
    public int AuthorFK { get; set; }
}

public class Author
{
    public int AuthorId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [ForeignKey("AuthorFK")]
    public ICollection<Book> Books { get; set; }
}

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)