Таблица Entity Framework C # не обновляется данными при использовании метода добавления

#c# #entity-framework

#c# #entity-framework

Вопрос:

Я следовал этому руководству

youtube.com/watch?v=K4x6eoG7hwYamp;ab_channel=SeeSharpCode

Но все еще не могу добавить данные в мою таблицу. Я не вносил никаких изменений вручную в этот код EF, который мне понравился в руководстве, но все еще не могу добавить данные в свою таблицу..

И это весь код, который я написал:

моя таблица :

 CREATE TABLE [dbo].[TableTest](
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] NCHAR(50) NOT NULL
)
  

мой код :

 using (Database1Entities database1Entities = new Database1Entities())            {
                TableTest t = new TableTest
                {
                    Name = "name1"
                };
                database1Entities.TableTest.Add(t);
                int c = database1Entities.TableTest.Count();
                database1Entities.SaveChanges();
            }
  

в следующей строке переменная c получает значение 0… Если это может помочь понять проблему

 int c = database1Entities.TableTest.Count();
  

Добавить TableTestModel.Context.cs класс

 public partial class Database1Entities : DbContext
    {
        public Database1Entities()
            : base("name=Database1Entities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet<TableTest> TableTest { get; set; }
    }
  

Кроме того, я использую

Эта конфигурация приложения

 <?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=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <connectionStrings>
    <add name="Database1Entities" connectionString="metadata=res://*/TableTestModel.csdl|res://*/TableTestModel.ssdl|res://*/TableTestModel.msl;provider=System.Data.SqlClient;provider connection string=amp;quot;data source=(LocalDB)MSSQLLocalDB;attachdbfilename=|DataDirectory|Database1.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFrameworkamp;quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.7.0" newVersion="3.1.7.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
  

И с использованием локальной базы данных SQL с именем Database1.mdf

Ответ №1:

Вы еще не завершили транзакцию, когда запрашиваете у БД количество объектов, измените это и скажите мне, работает ли это:

 using (Database1Entities database1Entities = new Database1Entities())            {
                TableTest t = new TableTest
                {
                    Name = "name1"
                };
                database1Entities.TableTest.Add(t);
                database1Entities.SaveChanges(); <----- HERE
                int c = database1Entities.TableTest.Count();
            }
  

Комментарии:

1. Вы правы насчет количества.. но она по-прежнему не добавляет новые данные в мою таблицу в базе данных..

2. Используйте ‘database1Entities. Add(t);’ без ссылки на объект, в случае, если это не сработает, могу ли я увидеть ваш dbcontext? (не забудьте скрыть строку подключения)

3. Я добавил это к своему основному вопросу

4. Да, я добавляю к ней новые данные вручную, их ссылку, чтобы изобразить это prnt.sc/uc0jf0

5. Ах, хорошо, что строка подключения использует конструктор EDMX. Скорее всего, происходит то, что вы смотрите на экземпляр базы данных designer, который создается, но приложение во время выполнения, возможно, создает / связывает с экземпляром базы данных (Database1.mdf) в другом каталоге данных. (т. Е., возможно, в каталоге /bin / debug /?) В каталоге вашего решения выполните поиск Database1.mdf, чтобы узнать, есть ли другая копия, созданная приложением. Прошло много времени с тех пор, как я использовал EDMXs, решив просто создать базу данных вручную и указать EF на нее с помощью сопоставлений для таблиц.