سؤال

أنا أحاول أن تصفية الكيانات القائمة على متجر أنواع (إما الجدول أو طريقة العرض).

لدي 2 الكيانات في اختبار مشروع واحد هو مصدر الجدول وغيرها من المصدر هو الرأي.

<EntitySet Name="Test" EntityType="TestModel.Store.Test" store:Type="Tables" Schema="dbo" />
<EntitySet Name="TestView" EntityType="TestModel.Store.TestView" store:Type="Views" store:Schema="dbo" store:Name="TestView">

نموذج التعليمات البرمجية أعلاه مأخوذ من نموذج آدم الملف SSDL القسم.

أعتقد متجر:نوع المعلومات في SSDL هو ما أريد ولكن لم أجد طريقة استرداد هذه القيمة باستخدام الكيان إطار api.

أي مساعدة سوف يكون موضع تقدير.

هل كانت مفيدة؟

المحلول

كذلك يمكنك الاستعلام عن البيانات الوصفية في SSDL من خلال النظر في SSpace أو StoreItemCollection.

أي

var sspaceEntitySets = context.MetadataWorkspace
                       .GetItems<EntityContainer>(DataSpace.SSpace)
                       .First().BaseEntitySets.OfType<EntitySet>();
var entitySet = sspaceEntitySets.First();
var tableType = entitySet
.MetadataProperties["http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator:Type"]
.Value.ToString();

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

للأسف EF لا فضح العامة CSSPace (أيلا يوجد طريقة لاستخدام API قراءة MSL جزء من آدم).

وذلك من أجل القيام بذلك سيكون لديك يدويا السبب على MSL العنصر ، على الأرجح باستخدام LINQ to XML أو شيء من هذا.

ويساعد هذا الأمل

اليكس

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