powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL. Багофича VS2015.
1 сообщений из 1, страница 1 из 1
LINQ to SQL. Багофича VS2015.
    #39291919
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSVS2015 Community 14.0.25123 update 2.
Осваиваю LINQ to SQL. Добавил в проект LINQ to SQL Classes. Сделал класс для таблицы. Смотрю какие запросы генерятся. Есть таблица
Код: sql
1.
Test (nId int IDENTITY(1,1) PRIMARY KEY CLUSTERED, cText nvarchar(50) NOT NULL, tCreate smalldatetime NOT NULL DEFAULT (getdate()))


поле tCreate дата создания записи, она не меняется никогда.
Код теста
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
			var db = new DataClasses1DataContext();
			db.Log = Console.Out; 
			var r = db.Tests.Take(1).SingleOrDefault();
			if(r == null) { // Добавляем запись если пусто
				Console.WriteLine("****************** INSERT **************************");
				r = new Test { cText = "new" };
				db.Tests.InsertOnSubmit(r);
			} else {
				Console.WriteLine("****************** UPDATE **************************");
				r.cText = DateTime.Now.ToString();
			}
			db.SubmitChanges();


Сначала не хотел работать INSERT, поставил в свойствах
Код: c#
1.
2.
3.
Auto Generated Value = True
Deleay Loaded = True
Update Check = Never


последние два чтобы лишний раз не упоминалось в запросах. К INSERT больше претензий нет.
Но начались проблемы с UPDATE.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT TOP (1) [t0].[nId], [t0].[cText] // тут нет tCreate 
FROM [dbo].[Test] AS [t0]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.6.1055.0

****************** UPDATE **************************
UPDATE [dbo].[Test]
SET [cText] = @p2
WHERE ([nId] = @p0) AND ([cText] = @p1)

SELECT [t1].[tCreate]
FROM [dbo].[Test] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[nId] = @p3)
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [2]
-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [15.08.2016 11:28:03]
-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [15.08.2016 11:40:49]
-- @p3: Input Int (Size = -1; Prec = 0; Scale = 0) [2]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.6.1055.0

SELECT [t0].[tCreate]
FROM [dbo].[Test] AS [t0]
WHERE [t0].[nId] = @p0
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [2]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.6.1055.0


В итоге перебором галок наткнулся на
Код: c#
1.
Auto-Sync = OnInsert


и помогло, лишние SELECT [t0].[tCreate] исчезли. Только до этого стояло Auto-Sync = Never, т.е. получается Never == Always ???

И еще вопрос: как-то можно задать дефолные значения свойствам неключевых полей чтобы все не протыкивать? Например Update check = Never.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL. Багофича VS2015.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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