مصمم الرسم Linq2SQL: لماذا لا تحديث قاعدة البيانات datacontext

StackOverflow https://stackoverflow.com/questions/1620263

سؤال

وهذا هو أول دفعة بلدي في LINQ إلى SQL. أنا خلق بلدي DBML في المصمم باستخدام قاعدة بيانات SQL Server اكسبرس. I إنشاء إجراء مخزن يسمى StoredProcedure1، وهو ما جر أيضا في DBML. ثم كتب لي بعض التعليمات البرمجية لاختبار إذا كان بإمكاني تحديث بعض الحقول. المشكلة هي أنه لا يوجد تحديثات تحدث إلى قاعدة البيانات، ولكن أرى أن التغييرات عندما يرتبط البيانات إلى DataGrid قابلة لل. ليس لدي فكرة لماذا لا يعمل أو ما أقوم به خطأ. هنا هو رمز:

DataClasses1DataContext data = new DataClasses1DataContext();
List<StoredProcedure1Result> result = new List<StoredProcedure1Result>(data.StoredProcedure1());


int i = 0;
foreach (StoredProcedure1Result r in result)
{
    r.TestField = "A" + i.ToString();
   i++;
}

// to see what has changed, set break point on next line
var changeSet = data.GetChangeSet(); 

// submit changes and show result in datagrid
data.SubmitChanges();
dataGrid.ItemsSource = result;

والإجراء المخزن مجرد الاستيلاء على كافة السجلات من جدول:

    USE [E:\test\test.MDF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[StoredProcedure1]
AS
    SELECT  * FROM TEST_TABLE
    RETURN
هل كانت مفيدة؟

المحلول 3

وأنا أحسب من ذلك. في مصمم مصمم الرسم Linq2SQL، تعيين نوع مقابل StoredProcedure1 لTEST_TABLE بدلا من السيارات التي تم إنشاؤها.

نصائح أخرى

وحسنا إذا كان لديك أي فكرة عما كنت أفعله خطأ، وربما قد تتمكن من محاولة شيء أكثر بساطة، مثل استعلام تحديد الكلاسيكي على بعض الكائنات الموجودة في قاعدة البيانات، وتحديث بعض الحقول وsubmitChanges (). ثم هل يمكن أن نبني على سبيل المثال عن طريق ربط الشبكة الخاصة بك إلى النتائج التي تم إرجاعها بواسطة اختيار الخاصة بك، وندعو SubmitChanges () في معالج الحدث الصحيح في الشبكة.

ويجب تغيير مباشرة السجلات من قاعدة البيانات من خلال LinqToSql. وتغيير النتائج التي تم استردادها من الإجراء المخزن يتم تحديث قاعدة البيانات.

وحاول شيئا من هذا القبيل، بدلا من استدعاء الإجراء المخزن:

var result = data.TEST_TABLES();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top