powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сконфигурировать EF6.
3 сообщений из 3, страница 1 из 1
Помогите сконфигурировать EF6.
    #39251858
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Подскажите пожалуйста в чем может быть дело.

Имеется такой набор таблиц, связанный как many-to-many:

Таблица студентов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE [Schema1].[Student](
	[Id] [int] IDENTITY(1,1) NOT NULL,	
	[Email] [nvarchar](max) NOT NULL,	
PRIMARY KEY CLUSTERED 
(
	[Id] ASC
),
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]




Таблица курсов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE [Shema1].[Course](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](max) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]




таблица связи многие-ко-многим.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE [Schema1].[CourseStudent](
	[CourseId] [int] NOT NULL,
	[StudentId] [int] NOT NULL,
	[DateBegin] [datetime2](7) NOT NULL,
	[DateEnd] [datetime2](7) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[CourseId] ASC,
	[StudentId] ASC,
	[DateBegin] ASC
) ON [PRIMARY]


ALTER TABLE [Schema1].[CourseStudent]  WITH CHECK ADD FOREIGN KEY([StudentId])
REFERENCES [Schema1].[Student] ([Id])
GO

ALTER TABLE [Schema1].[CourseStudent]  WITH CHECK ADD FOREIGN KEY([CourseId])
REFERENCES [Schema1].[Course] ([Id])
GO




Проблема с конфигурированием .

Сейчас конфигурация следующая:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    public class StudentConfiguration:EntityTypeConfiguration<Student>
    {
        public StudentConfiguration()
        {
            ToTable("Student", "Schema1");
            HasKey(x => x.Id).Property(x => x.Id).HasColumnName("Id");

            HasMany(x => x.Courses)
                .WithMany( e => e.Students)
            .Map(x =>
            {
                x.MapLeftKey("StudentId");
                x.MapRightKey("CourseId");
                x.ToTable("CourseStudent", "Schema1");   // (1)  тут есть проблема
            });                        

        }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class CourseConfiguration : EntityTypeConfiguration<Course>
    {
        public CourseConfiguration()
        {
            ToTable("Course", "Schema1");            
            HasKey(x => x.Id);
            HasMany(x => x.Students)
                .WithMany(e => e.Courses);
        }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class CourseStudentConfiguration : EntityTypeConfiguration<CourseStudent>
    {
        public CourseStudentConfiguration()
        {
            // ToTable("CourseStudent", "Schema1");    // (2) тут проблема есть

            HasKey(x => new { x.StudentId, x.CourseId, x.DateBegin });          
        }
    }




Проблема следующая

С данной конфигурацией работает следующий запрос
Код: c#
1.
2.
var myContext = new MyContext ()
myContext.Set<Course>().Select(x => x.Id).ToList();



Но не работает этот:

Код: c#
1.
2.
var myContext = new MyContext ()
myContext.Set<CourseStudent>().Select(x => x.StudentId).ToList();



Ошибка:
Код: html
1.
Invalid object name 'dbo.CourseStudent'.



Если же закомментировать (1) и раскоментировать (2) то все наоборот !

Если же раскоментировать и (1) и (2), то ошибка следующая:

Код: html
1.
2.
3.
One or more validation errors were detected during model generation:

StudentCourse: Name: The EntitySet 'StudentCourse' with schema 'Schema1' and table 'CourseSudent' was already defined. Each EntitySet must refer to a unique schema and table.



Проблема в том, что нельзя два раза конфигурировать один объект ??

Вопрос.
Как правильно сконфигурировать и заставить работать эту технологию в российских условиях ?
...
Рейтинг: 0 / 0
Помогите сконфигурировать EF6.
    #39251864
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смущает еще то, что в сообщении об ошибке указано неверное имя таблицы:
StudentCourse : Name: The EntitySet ' StudentCourse ' with schema 'Schema1' and table 'CourseSudent' was already defined. Each EntitySet must refer to a unique schema and table.

Видимо EF где-то не увидел конфигурации и сам придумал название связующей таблицы как 'StudentCourse'. Но ведь конфигурация есть же - даже дважды (1), (2).
...
Рейтинг: 0 / 0
Помогите сконфигурировать EF6.
    #39255345
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,

А у вас "x" в StudentConfiguration какого типа?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите сконфигурировать EF6.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]