2010-03-11 56 views
1

我想編寫我們自己的RIA服務提供程序來公開我通過ODBC訪問的服務器的數據。我遵循在http://blogs.msdn.com/alexj/archive/2010/03/02/creating-a-data-service-provider-part-9-un-typed.aspx

列出的eguidelines我已經寫了我們自己的IDataServiceMetadataProvider/IDataServiceQueryProvider對,並得到我沒有錯誤。

我把在設置這樣的資源:

ResourceType tableType = new ResourceType(
    typeof(Dictionary<string, object>), 
    ResourceTypeKind.EntityType, 
    null, 
    "Martini", 
    table_name, 
    false 
); 
tableType.CanReflectOnInstanceType = false; 
var prodKey = new ResourceProperty(
    "Key", 
    ResourcePropertyKind.Key | 
    ResourcePropertyKind.Primitive, 
    ResourceType.GetPrimitiveResourceType(typeof(int)) 
); 
prodKey.CanReflectOnInstanceTypeProperty = false; 
tableType.AddProperty(prodKey); 
var prodName = new ResourceProperty(
    "Name", 
    ResourcePropertyKind.Primitive, 
    ResourceType.GetPrimitiveResourceType(typeof(string)) 
); 
prodName.CanReflectOnInstanceTypeProperty = false; 
tableType.AddProperty(prodName); 

_MetaDataProvider.AddResourceType(tableType); 
_MetaDataProvider.AddResourceSet(new ResourceSet(table_name, tableType)); 

我看到了未來的請求在枚舉資源集。我在斷點處檢查它們,資源集和類型在那裏,包含所有屬性。

儘管如此,輸出我得到的是:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <service xml:base="http://localhost:2377/MartiniData.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app"> 
- <workspace> 
    <atom:title>Default</atom:title> 
    </workspace> 
    </service> 

而對於$元數據版本:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"> 
- <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0"> 
- <Schema Namespace="Martini" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://schemas.microsoft.com/ado/2007/05/edm"> 
    <EntityContainer Name="Martini" m:IsDefaultEntityContainer="true" /> 
    </Schema> 
    </edmx:DataServices> 
    </edmx:Edmx> 

的各類實際元數據一直沒有出現,沒有顯示任何錯誤。相當令人沮喪。任何想法?

回答

0

Hmpf。發現。

config.SetEntitySetAccessRule(「*」,EntitySetRights.All);

在初始化時丟失了,所以所有實體都被過濾掉了;)