سلام
من مدل دیتابیس ایجاد میکنم با دستور -o و کلاس ها ایجاد می شود، ولی نام ستون های ریلیشنی تغیر می کند.
مثلا User - Role - UserRole
در جدول UserRole کلید های ریلیشنی بین User - Role را به نام IdUserNavigator درست می کند. در مدل بدون Core این ریلیشن ها با نام خود جدول درست می شد
سلام
دلیلش اینه که شما فقط 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; } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)