Asp.net web api 在entityType上找不到属性Nome: 问题

Asp.net web api 在entityType上找不到属性Nome: 问题,asp.net-web-api,odata,breeze,Asp.net Web Api,Odata,Breeze,无法在entityType:Modalidade:#CreditoImobiliarioBB.Model上找到属性:Nome 但是这个属性在类中! 未生成对/odata/modalidades的请求,仅生成对/odata/$metadata的请求 代码 域类 配置 查询 query = new breeze.EntityQuery().from("modalidades") query = query.where("Nome", breeze.FilterQueryOp.Contains, @T

无法在entityType:Modalidade:#CreditoImobiliarioBB.Model上找到属性:Nome

但是这个属性在类中! 未生成对
/odata/modalidades
的请求,仅生成对
/odata/$metadata
的请求

代码 域类 配置 查询

query = new breeze.EntityQuery().from("modalidades")
query = query.where("Nome", breeze.FilterQueryOp.Contains, @TermoBusca()) if @TermoBusca()
query.orderBy("Nome")

manager = new breeze.EntityManager("/odata/")           
promise = manager.executeQuery(query)
    .finally ->
        notice.pnotify_remove()
        filterUrl = creditoimobiliario.getParameterByName "\\$filter", @url
        _this.TermoBusca "$filter=#{filterUrl}" if filterUrl
    .fail creditoimobiliario.displayXhrNotifyError
promise.then (data, status, xhr) =>
    return if not status or status != 200
    ko.utils.arrayPushAll @Collection, data.value
    @NextUrl data["odata.nextLink"]
promise
元数据
不确定确切的问题,但Microsoft的ODataConventionModelBuilder的当前状态是它还不支持完整的OData规范。特别是它还不支持外键的定义(Breeze需要)。它可能还有其他问题。微软声称这将在以后的版本中修复

目前,我只想使用微软的WCF数据服务向OData公开EF模型。比如:

public class ODataService : DataService<MyEFContext> {

    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config) {
      // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
      // Examples:
      // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.All);
      ...

       config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
       config.UseVerboseErrors = true;
}
公共类ODataService:DataService{ //此方法只调用一次以初始化服务范围策略。 公共静态void InitializeService(DataServiceConfiguration配置){ //TODO:设置规则以指示哪些实体集和服务操作是可见的、可更新的等。 //示例: //config.SetEntitySetAccessRule(“MyEntityset”,EntitySetRights.All); ... config.DataServiceBehavior.MaxProtocolVersion=DataServiceProtocolVersion.V2; config.UseVerboseErrors=true; }
不确定确切的问题,但Microsoft的ODataConventionModelBuilder的当前状态是它还不支持完整的OData规范。特别是它还不支持外键的定义(Breeze需要)。可能还有其他问题。Microsoft已声明将在以后的版本中修复此问题

目前,我只想使用Microsoft的WCF数据服务向OData公开EF模型。类似于:

public class ODataService : DataService<MyEFContext> {

    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config) {
      // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
      // Examples:
      // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.All);
      ...

       config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
       config.UseVerboseErrors = true;
}
公共类ODataService:DataService{ //此方法只调用一次以初始化服务范围策略。 公共静态void InitializeService(DataServiceConfiguration配置){ //TODO:设置规则以指示哪些实体集和服务操作是可见的、可更新的等。 //示例: //config.SetEntitySetAccessRule(“MyEntityset”,EntitySetRights.All); ... config.DataServiceBehavior.MaxProtocolVersion=DataServiceProtocolVersion.V2; config.UseVerboseErrors=true; } 我在中找到了答案

解决方法是简单地注释代码的这一行
NamingConvention.camelCase.setAsDefault();
,我在中找到了答案


解决方案只是注释代码的这一行
NamingConvention.camelCase.setAsDefault();

我使用的是夜间构建,它支持FKs。我使用的是夜间构建,它支持FKs。
query = new breeze.EntityQuery().from("modalidades")
query = query.where("Nome", breeze.FilterQueryOp.Contains, @TermoBusca()) if @TermoBusca()
query.orderBy("Nome")

manager = new breeze.EntityManager("/odata/")           
promise = manager.executeQuery(query)
    .finally ->
        notice.pnotify_remove()
        filterUrl = creditoimobiliario.getParameterByName "\\$filter", @url
        _this.TermoBusca "$filter=#{filterUrl}" if filterUrl
    .fail creditoimobiliario.displayXhrNotifyError
promise.then (data, status, xhr) =>
    return if not status or status != 200
    ko.utils.arrayPushAll @Collection, data.value
    @NextUrl data["odata.nextLink"]
promise
<EntityType Name="Modalidade">
    <Key>
        <PropertyRef Name="Id" />
    </Key>
    <Property Name="Id" Type="Edm.Int32" Nullable="false" />
    <Property Name="Nome" Type="Edm.String" Nullable="false" />
</EntityType>
public class ODataService : DataService<MyEFContext> {

    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config) {
      // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
      // Examples:
      // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.All);
      ...

       config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
       config.UseVerboseErrors = true;
}