سؤال

ومع المعلمة طريقة

Int16? id

وعلى LINQ إلى SQL حيث شرط

where !id.HasValue || m.Id == id

وهذا نص الأمر مما أدى لحالة في سياق البيانات

ومن متخيل:

SELECT [t0].[Id], [t0].[Name], [t0].[IsActive]
FROM [Model] AS [t0]
WHERE (CONVERT(Int,[t0].[Id])) = @p0
-------------------------------
@p0 [Int32]: 5

وصفي معين لديه معرف على أنه Int16 وقاعدة البيانات نفسها لديها نوع العمود باعتباره صحيح صغير، لذلك لماذا وراء الكواليس SQL أعتقد أن المعلمة هي عدد صحيح (Int32) وليس صحيح صغير (Int16) <؟ / P>


ورسم الخرائط العمود:

    [Column(IsPrimaryKey = true, DbType="SmallInt NOT NULL", CanBeNull=false)]
    public Int16 Id { get; set; }
هل كانت مفيدة؟

المحلول

وتغيير حيث شرط لقراءة

where !id.HasValue || m.Id == id.Value

وهناك شيء حول القصير قيم الفارغة التي يتم رميها بعيدا. لست متأكدا لماذا، لكنني واجهت هذا من قبل، ووجدت مضيفا أن .Value العمل.

نصائح أخرى

وهممم ... لقد لاحظت أنك لا تحصل على أي تمثيل! id.HasValue في مزود. ولعل هذا هو نوع من الخداع المتعلقة بذلك الحصول على ملفوفة؟ يبدو زائفة لي، ولكن الشيء الوحيد الذي يمكنني أن أفكر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top