2013-04-29 2 views
0

Я расширил приложение ASP.Net Web Pages с помощью платформы Entity Framework, которую я загрузил в Visual Studio через NuGet. Теперь я получаю следующую ошибку, пытаясь назначить другое имя столбца правилу.Ошибка при использовании ColumnAttribute для EF-модели

CS0246: тип или пространство имен имя 'Column' не может быть найден (являются Соскучились с помощью директивы или ссылка на сборку?)

Моя модель:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Linq; 
using System.Web; 
using WebMatrix.Data; 

namespace Models { 
    public class News 
    { 
     public int Id { get; set; } 

     [Column("d_date")] 
     public DateTime Date { get; set; } 

     [Column("m_text")] 
     public string Text { get; set; } 
    } 
} 

ColumnAttribute должен быть в System.ComponentModel.DataAnnotations.Schema, поэтому я не могу понять проблему.

UPDATE Мой Web.Config файл:

<?xml version="1.0" encoding="utf-8"?> 
<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="MyDatasource" connectionString="server=localhost; database=testdb; User Id=***; Password=***;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <customErrors mode="Off" /> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    </system.webServer> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    </entityFramework> 
</configuration> 
+0

Атрибут находится под System.ComponentModel.DataAnnotations –

+0

Я думаю, что это зависит от версии EF, которую он использует, он жил там, но теперь он находится в System.ComponentModel.DataAnnotations.Shema (с EF 5 I думать). Я бы проверял, что вы ориентируетесь на .NET 4.5 и ссылаетесь на последнюю версию EF. – blins

+0

Я просто понял, что, хотя NuGet сказал мне в другом случае, у меня вместо EF включен EF 4.4. Пожалуйста, взгляните на мой Web.Config. Может быть, проблема? – android

ответ

2

После обновления моего приложения на .Net 4.5, что, наконец, работает, как ожидалось. Похоже, что EF 5 не полностью совместим с .Net 4.0.

1

в Entity Framework 5 ColumnAttribute перемещается класс в другое пространство имен называется System.ComponentModel.DataAnnotations.Schema. Так что вам нужно добавить, используя заявление, чтобы включить это пространство имен тоже в вашем классе модели, если вы используете EF 5

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
+0

Как вы можете видеть в моем коде, я уже это сделал. Но я только что обнаружил, что у меня может быть неправильная версия EF. Может ли это быть проблема? – android

+0

переустановите EF и посмотрите, устранит ли это проблему. –

+0

Я просто попробовал, но это не сработало. В моем package.config я нашел это: '' Какая версия теперь установлена? 4,4 или 5? Я не понимаю ... – android

Смежные вопросы