powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF как отключить проверку ?
2 сообщений из 2, страница 1 из 1
EF как отключить проверку ?
    #36896985
S_A_V_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть в БД 2 таблицы: DataSource и DataSetAttributes. Они включены в модель MetadataEntities. Есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
class Class3
{
// Здесь начинается выполнение
public void Run()
{
Class1 c1 = new Class1();
c1.Run();

Class2 c2 = new Class2();

c2.FuncDS();
}
}

class Class1{

List<DataSetAttribute> list;

public Class1()
{
list = new  List<DataSetAttribute>();
}

public void Run()
{
for(int i = 0; i < 5; i++)
{
FuncA();
}
}
void void FuncA()
{
// Просто создаётся новый аттрибут и инициализируется какими то значениями
// Далее он просто добавлиется в список. Свойство EditorType не заполняется т.к. атрибут не
// предполагается сохранять в БД.
DataSetAttribute attribute = new DataSetAttribute()
attribute.Id = ....;
attribute.DataType = ...;
......

list.Add(attribute);
}
....
}

class Class2
{
MetadataEntities me;

public Class2()
{
me = new MetadataEntities();
}

public void FuncDS()
{
// Создаю новый DataSource, инициализирую и пытаеюсь сохранить в БД
DataSource ds = new DataSource();
ds.Name = .....;
......
// При выполнении этой строки Exception
me.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
}
}


При выполнении реального кода получаю exception :

System.Data.UpdateException occurred
Message=Entities in 'MetadataEntities.DataSetAttributes' participate in the 'FK_DataSetAttributes_EditorTypes' relationship. 0 related 'EditorTypes' were found. 1 'EditorTypes' is expected.
Source=System.Data.Entity
StackTrace:
.....


Как следует из кода созанный DataSetAttribute никуда кроме листа не добавляется. Он нужен просто как объект по которому будет создан другой объект. Т.е. созданный объект типа DataSource никак не связан с созданными объектами типа DataSetAttribute. Но при попытке сохранить ds почему то проверяются и объекты типа DataSetAttribute созданные оператором new. Кроме того если задать EditorType , то EF ещё и пытается их писать в БД (вылетает с другим ексепшеном).
Вопрос:
В чём причина и как от этого избавиться. Как заставить EF проверять и писать в БД только объекты добавленные мтодами типа me.DataSetAttributes.AddObject(dsAttribute);

Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
EF как отключить проверку ?
    #36910558
S_A_V_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался.
Была такая строчка:
Код: plaintext
1.
attribute.DataSource = ds;

При этом не только в новом объекте типа DataSetAttribute запоминается ссылка на DataSource , но и в коллекцию ds.DataSetAttributes добавляется attribute. Т.е. объекты связываются.Не очевидно , но факт...
Тема закрыта.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF как отключить проверку ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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