Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
1

EF: The store type 'character varying' could not be found

15.02.2018, 01:15. Просмотров 888. Ответов 6
Метки нет (Все метки)

Здравствуйте, имеется бд postgresql и в нем определены поля с типом character varying.
Модель таблицы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
  public class Person
    {
        [Key]
        public long Id { get; set; }
        [Required]
        public string FirstName { get; set; }
        [Required]
        public string LastName { get; set; }
        public string Patronymic { get; set; }
        [Required]
        public string LdapName { get; set; }
    }
Контекст данных:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  public class ECLBaseContext : DbContext
    {
        public ECLBaseContext(): base("name=ECLBaseContext") { }
 
        public DbSet<Person> People { get; set; }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // Person
            modelBuilder.Entity<Person>().ToTable("person", "organization");
            modelBuilder.Entity<Person>().Property(p => p.Id)
                .HasColumnName("person_id")
                .HasColumnType("bigint");
            modelBuilder.Entity<Person>().Property(p => p.FirstName)
                .HasColumnName("person_first_name")
                .HasColumnType("character varying")
                .HasMaxLength(50);
            modelBuilder.Entity<Person>().Property(p => p.LastName)
                .HasColumnName("person_last_name")
                .HasColumnType("character varying")
                .HasMaxLength(50);
            modelBuilder.Entity<Person>().Property(p => p.Patronymic)
                .HasColumnName("person_patronymic")
                .HasColumnType("character varying")
                .HasMaxLength(100);
            modelBuilder.Entity<Person>().Property(p => p.LdapName)
                .HasColumnName("person_ldap")
                .HasColumnType("character")
                .HasMaxLength(60);
}
}
При попытке создать дефолтный контроллер по модели Person выскакивает ошибка (на скрине)

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
EF: The store type 'character varying' could not be found  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2018, 01:15
Ответы с готовыми решениями:

Character varying(n) vs text
Здравствуите мне надо сохранить в таблице текст, у которого длина всегдa 32 символ, вопрос в том...

Выводит ошибку type-declaration character does not match declared data type
Не могу понять где ошибка в программе, помогите исправить, очень нужна ваша помощь.. Sub lab4()...

Ошибка при компиляции 'Type-declaration character does not match declared data type.'
Не могу понять почему на строке sInfo = Left$(sInfo, iPos - 1) при попытке компиляции выдается...

Ошибка "Type-declaration character does not match declared data type"
Снова я. Запускаю программу, а у меня выскакивает &quot;Type-declaration character does not match...

[Warning] character constant too long for its type
Подскажите, пожалуйста, что я не так сделал? Выдает ошибки, что &quot; character constant too long for...

6
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
15.02.2018, 01:37  [ТС] 2
Web.config:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301879
  -->
<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=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup></configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
  <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules></system.web>
  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  <validation validateIntegratedModeConfiguration="false" /><modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules></system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.7.0" newVersion="2.2.7.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>
    <add name="ECLBaseContext" providerName="Npgsql" connectionString="Server=127.0.0.1;User Id=ecl_adm;Password=ecl_adm96541;Port=5432;Database=ecl_base;" />
    <add name="elmah-postgresql" connectionString="Server=127.0.0.1;Port=5432;Database=elmah;User Id=postgres;Password=postgres;" />
  </connectionStrings>
  <entityFramework>    
    <defaultConnectionFactory type="Npgsql.NpgsqlServices, Npgsql.EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
  </DbProviderFactories>
</system.data>
<elmah>
    <!--
        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
        more information on remote access and securing ELMAH.
    -->
    <security allowRemoteAccess="false" />
  <errorLog type="Elmah.PgsqlErrorLog, Elmah" connectionStringName="elmah-postgresql" /></elmah><location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <!-- 
        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
        more information on using ASP.NET authorization securing ELMAH.
 
      <authorization>
        <allow roles="admin" />
        <deny users="*" />  
      </authorization>
      -->  
    </system.web>
    <system.webServer>
      <handlers>
        <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
  </location></configuration>
Добавлено через 13 минут
То есть, почему ef использует SqlServer provider, хотя я в строке подключения указал использовать Npgsql.
0
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
15.02.2018, 03:01  [ТС] 3
Попытался по пробовать использовать без шаблона контекстов, но получаю опять ошибку.
0
Миниатюры
EF: The store type 'character varying' could not be found  
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
15.02.2018, 05:44  [ТС] 4
Скрипт таблицы Person:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE organization.person
(
  person_id BIGINT NOT NULL,
  person_un_id CHARACTER(20) NOT NULL,
  person_org_id BIGINT NOT NULL,
  person_ldap CHARACTER(60) NOT NULL,
  person_first_name CHARACTER VARYING(50) NOT NULL,
  person_last_name CHARACTER VARYING(50) NOT NULL,
  person_patronymic CHARACTER VARYING(100),
  person_position_id INTEGER NOT NULL,
  CONSTRAINT person__pk PRIMARY KEY (person_id),
  CONSTRAINT orunit__id__fk FOREIGN KEY (person_org_id)
      REFERENCES organization.orgunit (orgunit_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT position__type__fk FOREIGN KEY (person_position_id)
      REFERENCES organization.position_type (position_type_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
0
kolorotur
Эксперт .NET
11627 / 9377 / 2390
Регистрация: 17.09.2011
Сообщений: 16,046
Завершенные тесты: 1
15.02.2018, 10:12 5
Судя по сообщению об ошибке, вы пытаетесь подключиться к базе Postgresql через провайдера SqlServer.
В конфиге нет зависимости EntityFramework6.Npgsql — она подключена?

Так же смущает параметр <parameter value="mssqllocaldb" /> в дефолтной фабрике для Npgsq.
1
sau
2137 / 1709 / 294
Регистрация: 22.07.2011
Сообщений: 6,489
Завершенные тесты: 1
15.02.2018, 11:31 6
Лучший ответ Сообщение было отмечено dima19972525 как решение

Решение

Уберите ручной маппинг типов .HasColumnType("character varying") , EF сам сообразит как к ним приводить.
http://www.npgsql.org/doc/types/basic.html
1
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
16.02.2018, 16:53  [ТС] 7
Проблему решил, через удаление HasColumnType, хотя, хотелось бы оставить эту запись.
0
16.02.2018, 16:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2018, 16:53

Вылезает: [Warning] character constant too long for its type
#include &lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; using namespace std; int main() { int...

Отключить предупреждение (character constant too long for its type [enabled by default])
Компилятор mingw32 пишет предупреждение: character constant too long for its type if...

Type or namespace could not be found
Привет. Помогите разобраться. Скриншот происходящего. Есть три класса, и 4-й контекст их не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru