【问题标题】:EF Code First MetadataExceptionEF 代码优先元数据异常
【发布时间】:2012-10-17 16:14:31
【问题描述】:

我已通过 NuGet 将 EF v5 安装到 VS 2010 项目中。代码如下:

public class HeliosCpDataContext : DbContext
{
    public HeliosCpDataContext() : base(Properties.Settings.Default.cn_HeliosCpNtAuth) {}
    public IEnumerable<Test> GetTests()
    {
            return this.Database.SqlQuery<Test>("EXEC App.Test");
    }
}

   public class Test
    {
       public string OrderNumber { get; set; }
       public int OrderId {get;set;}
    }

   CREATE PROC [dbo].[Test]
   AS 
    SET NOCOUNT ON


SELECT TOP 10 OrderNumber, OrderId
FROM dbo.Orders o

字段 [OrderNumber] 为 Varchar(20),[OrderId] 为 INT

这里是 app.config:

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="HeliosCp.Data.Properties.Settings.cn_HeliosCpNtAuth"
      connectionString="Data Source=DCXVRSQ471;Initial Catalog=SCPT_HeliosCp;Integrated Security=True;MultipleActiveResultSets=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

当我尝试执行时:

  var context = new HeliosCp.Data.HeliosCpDataContext();
  var test = context.GetTests().FirstOrDefault();

我收到 MetadataException “指定的架构无效。错误: (137,6) :错误 0063:int 类型的属性不允许使用精度方面。 (137,6) : 错误 0063: int 类型的属性不允许缩放刻面。"

我尝试将存储过程中的每个字段显式转换为 Varchar & int,通过 SqlQuery 函数而不是存储过程显式执行查询(“SELECT TOP 10 ...”),正在删除查询完全来自 sproc(即,在 sproc 的主体中没有留下任何内容),并且每次都得到完全相同的异常。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 这就是你项目中的所有代码吗?由于错误出现在 edmx 文件的第 137 行,因此在我看来,您拥有的不止这些。你能做 EdmxWriter.WriteEdmx 并发布有方面的行吗?生成这样的模型将是 EF 中的错误。
  • 我使用的是codefirst,所以如果我理解正确就没有Edmx
  • 有但你看不到。这就是为什么我要求你使用 EdmxWriter。读取此生成的 edmx 时会引发异常。
  • 执行 EdmxWriter.WriteEdmx 时出现同样的错误
  • 您可以在entityframework.codeplex.com 提交错误并附上repro 吗?

标签: c# .net sql-server entity-framework


【解决方案1】:

尝试打开您的 edmx 文件并删除 int 的精度属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2012-04-27
    • 2012-08-12
    • 1970-01-01
    • 2016-05-26
    • 2012-05-17
    相关资源
    最近更新 更多