ورود

View Full Version : سوال: استفاده از تریگر زمانی که از entity framework استفاده می کنیم؟



karimi.ali2005
دوشنبه 23 اردیبهشت 1392, 14:43 عصر
اگر برای یکی از جدول ها تریگر بسازم تمام اعمال که بروری ان با استفاده از entity framework نوشتم انجام نمی شود(insert,update,delete) اما اگر تریگر را پاک کنم مشکلی وجود ندارد
یه جایی خوندم زمانی که از entity framework استفاده می کنیم نمی توانیم از تریگر ها استفاده کنیم
آیا این موضوع واقعیت دارد؟
اگر واقعیت ندارد راه حل چیست؟

alihassanabadi
دوشنبه 23 اردیبهشت 1392, 19:19 عصر
سلام

اگر برای یکی از جدول ها تریگر بسازم تمام اعمال که بروری ان با استفاده از entity framework نوشتم انجام نمی شو
نه اصلا این قضیه صحت نداره
تریگر ها داخل دیتابیس ساخته میشن و زمانی که شما تغییری روی جدول اجرا میکنید اجرا میشن صرفنظر از اینکه شما از Entity Framework استفاده کردید یا بصورت مستقیم
داخل خود SQL کوئری رو اجرا میکنید.
Triggers run on the database, independent of the application

karimi.ali2005
سه شنبه 24 اردیبهشت 1392, 07:13 صبح
سلام

نه اصلا این قضیه صحت نداره
تریگر ها داخل دیتابیس ساخته میشن و زمانی که شما تغییری روی جدول اجرا میکنید اجرا میشن صرفنظر از اینکه شما از Entity Framework استفاده کردید یا بصورت مستقیم
داخل خود SQL کوئری رو اجرا میکنید.
Triggers run on the database, independent of the application

تا حالا به صورت عملی شما روی entity framework انجام دادید
چون من یک تریگر نوشتم که وقتی عمل (insert,update,delete) انجام می دهم داخل جدول دیگر اطلاعاتی می ریزد
زمانی که تریگر را disable می کنم دستور entity به درستی انجام شد و اطلاعات من داخل جدول ریخته می شود
اما اگر تریگر را enable کنم به محض اینکه به savechange رسید خطا می دهد
داخل sql هم کد (insert,update,delete) نوشتم مشکلی نداشت وتریگر کار می کرد

با تشکر

karimi.ali2005
سه شنبه 24 اردیبهشت 1392, 07:47 صبح
بله شما درست گفتید من اشتباه کردم
مشکلی با تریگر نداره
من دستور زیر را برای بدست اوردن ip نوشتم خطا می دهد ولی زمانی که داخل sql عملیاتی انجام می دهم (insert,update,delete) مشکلی وجود ندارد و ip را بر می گرداند
و حتی من قبلا که از دلفی استفاده می کردم مشکلی وجود نداشت و خطایی نمی داد

DECLARE @ip VARCHAR(32)
set @ip=(
SELECT client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID
);

آیا راه حلی هست داخل تریگر را کامپایل کنم در زمان اجرا