2012-10-17 2 views
0

J'ai installé EF v5 via NuGet dans un projet VS 2010. Voici le code:Code EF First MetadataException

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 

Champ [OrderNumber] est Varchar (20), [OrderId] est INT

Voici le 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> 

Lorsque je tente d'exécuter:

(137,6)::
var context = new HeliosCp.Data.HeliosCpDataContext(); 
    var test = context.GetTests().FirstOrDefault(); 

je reçois un MetadataException « erreurs de schéma spécifié est incorrect. erreur 0063 : La facette de précision n'est pas autorisée pour les propriétés de type int. (137,6): erreur 0063:. Facette échelle n'est pas autorisé pour les propriétés de type int «

J'ai essayé de jeter explicitement chaque champ dans le sproc comme Varchar & int, exécuter explicitement la requête (» SELECT TOP 10 ... ") via la fonction SqlQuery au lieu du sproc, en supprimant la requête entièrement du sproc (ie, ne laissant rien dans le corps du sproc), et j'obtiens exactement la même Exception, à chaque fois. aide sera grandement appréciée, merci.

+0

est-ce tout le code que vous avez i n votre projet? Puisque l'erreur est sur la 137ème ligne du fichier edmx, il me semble que vous avez plus que cela. Pouvez-vous faire EdmxWriter.WriteEdmx et publier la ligne qui a des facettes? Générer un modèle comme celui-ci serait un bug dans l'EF. – Pawel

+0

J'utilise codefirst, donc il n'y a pas Edmx si je comprends bien –

+0

Il y a mais vous ne le voyez pas. C'est pourquoi je vous ai demandé d'utiliser EdmxWriter. L'exception que vous obtenez est levée lors de la lecture de cet edmx généré. – Pawel

Répondre

0

ouverture Essayez vous edmx fichier et supprimez l'attribut de précision de votre int

Questions connexes