Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Relation -> Cascade -> Expression / 2 сообщений из 2, страница 1 из 1
06.07.2006, 11:05
    #33834925
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation -> Cascade -> Expression
Код: 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.
						DataColumn
							tmpDataColumn;

						SQLText="MasterTable";
						ds.Tables.Add(SQLText);
						tmpDataColumn=ds.Tables[SQLText].Columns.Add("Id",typeof(long));
						tmpDataColumn.AllowDBNull=false;
						tmpDataColumn.Unique=true;
						tmpDataColumn.AutoIncrement=true;
						tmpDataColumn.AutoIncrementSeed=- 1 ;
						tmpDataColumn.AutoIncrementStep=- 1 ;
						ds.Tables[SQLText].Columns.Add("Name",typeof(string));
						ds.Tables[SQLText].PrimaryKey=new DataColumn[]{ds.Tables[SQLText].Columns["Id"]};

						SQLText="DetailsTable";
						ds.Tables.Add(SQLText);
						tmpDataColumn=ds.Tables[SQLText].Columns.Add("Id",typeof(long));
						tmpDataColumn.AllowDBNull=false;
						tmpDataColumn.Unique=true;
						tmpDataColumn.AutoIncrement=true;
						tmpDataColumn.AutoIncrementSeed=- 1 ;
						tmpDataColumn.AutoIncrementStep=- 1 ;
						ds.Tables[SQLText].Columns.Add("MasterId",typeof(long));
						ds.Tables[SQLText].Columns.Add("Sum",typeof(decimal));
						ds.Tables[SQLText].PrimaryKey=new DataColumn[]{ds.Tables[SQLText].Columns["Id"],ds.Tables[SQLText].Columns["MasterId"]};

						string
							RelationName="Master_Details";
						
						ForeignKeyConstraint
							_fk_;

						ds.Tables[SQLText].Constraints.Add(_fk_=new ForeignKeyConstraint("fk"+RelationName,ds.Tables["MasterTable"].Columns["Id"],ds.Tables["DetailsTable"].Columns["MasterId"]));
						_fk_.UpdateRule=Rule.Cascade;
						_fk_.DeleteRule=Rule.Cascade;
						ds.Relations.Add(RelationName,ds.Tables["MasterTable"].Columns["Id"],ds.Tables["DetailsTable"].Columns["MasterId"]);
						SQLText="MasterTable";
						ds.Tables[SQLText].Columns.Add("TotalSum",typeof(decimal),"Sum(Child("+RelationName+").Sum)");
Заполняем, смотрим - все сухо

далее делаем
Код: plaintext
1.
ds.Tables["MasterTable"].Rows[ 0 ]["Id"]= 13 ;
Каскадирование происходит, но в "MasterTable"."TotalSum" - NULL

Что нужно ышо покрутитЪ/подкрутитЪ/пнутЪ чтобы забегало?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
06.07.2006, 14:34
    #33835712
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Relation -> Cascade -> Expression
лечится
Код: plaintext
1.
2.
ds.Tables["MasterTable"].Rows[ 0 ]["Id"]= 13 ;
ds.Tables["MasterTable"].Columns["TotalSum"].Expression="Sum(Child("+RelationName+").Sum)";
Но, IMHO, это изврат чистейшей воды... Неужели ничего в DataColumn нет а-ля LiveUpdate (Потому как если грохнуть relation, то значение в TotalSum остается, хотя, IMHO, было бы логичнее его в NULL сбрасывать)?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Relation -> Cascade -> Expression / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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