首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数据库首先使用system.data.sqlite 1.0.93创建实体框架6.1.1模型

数据库首先使用system.data.sqlite 1.0.93创建实体框架6.1.1模型
EN

Stack Overflow用户
提问于 2014-08-01 14:04:11
回答 6查看 29K关注 0票数 22

我有一个项目,我刚刚更新了使用nuget。这个更新后的实体框架从6.1更新到6.1.1,并将sqlite更新为1.0.93。我想从我最新的数据库中更新我的模型。我从数据库中完成了以下步骤: 1)模型;2)选择sqlite数据库;3)生成

在生成之后,我收到了如下错误消息。我已经安装了1.0.93设计时组件。有人知道是什么导致了这个错误吗。项目引用和版本都与上述版本相匹配。

错误信息:

您的项目引用最新的实体框架;但是,无法为您找到与此版本兼容的实体框架数据库提供程序。

更新:

最后,我使用包管理器控制台手动安装了6.1.0

安装-软件包EntityFramework -Version 6.1.0

然后在我的csporj文件中替换

软件包\EntityFramework.6.1.1

使用

软件包\EntityFramework.6.1.0

我尝试从数据库创建EF设计器,从数据库首先创建代码,但我仍然得到相同的错误。

更新

我已经按照汤姆提供的指示,感谢您抽出时间深入回答,我们对此表示感谢。但我无法让实体框架设计器使用SQLite 1.0.93。我所发现的:

1)如汤姆所述,当我从tools菜单中添加SQLite数据源时,我看到了SQLite数据提供程序。

2)但是当我重新启动visual studio时,数据源没有连接

3)数据源可以刷新,重新启动后有效。

4)添加新数据项,但SQLite未被列为提供程序

我已经双重检查了注册表,EF6被附加到不变名称,SQLite dll在GAC中注册。我会试着看看我还能找到什么,但此时我不知道该找什么。顺便提一句,我已经尝试过dotConnect,它也不适用于EF6.1.1。

更新2

是否有人知道实体框架设计器是否有一个日志选项来查找可能发生的事情?

EN

回答 6

Stack Overflow用户

发布于 2014-08-07 02:13:16

Update :使用VisualStudio2013Update4 (Pro和终极版)以及Sqlite和EF的最新版本的更简单的解决方案,请查看下面发布的解决方案“broslav”。不知道它是否适用于快报版。

好吧,这是个建议。这不适用于版本。此外,我也不知道如何让它对现有项目进行更新。这绝对是屁股上的痛。我还没有测试是否所有东西都是必需的,但这应该是可行的:

首先,不要将NuGet包用于SQLite,而是从这里下载程序集安装程序:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

安装32位Windows (.NET Framework4.5.1)安装程序:.NET (10.00 MiB) (不是64位版本)。这是唯一和设计师在一起的。

安装并选择在GAC中安装,并为VS13安装设计器。

对于下面的内容,的精确顺序非常重要!

我制作了一个关于这些步骤的视频--,参见:http://vimeo.com/103372740

用VS13创建一个项目。将构建明确地指向框架4.5.1和x86。保存并构建。

接下来,从NuGet安装最新的EF 6软件包(6.1.1)。保存并构建。

手动添加对已安装的SQLite程序集(包括设计器)的引用,在程序集下的参考管理器下,您可以找到扩展选项,用于选择GAC中添加的四个程序集: System.Data.SQLite Core + Designer + for Entity Framework + for LINQ。保存并构建。

然后在“工具”下通过“连接到数据库”创建到数据库的连接。在进行任何其他操作之前,先保存和构建,然后重新启动 Visual。在启动ADO.NET实体数据模型向导之前,不要做任何其他事情,所以不要刷新数据库连接。

添加一个ADO.NET实体数据模型,选择Generate数据库。您的数据库连接将显示在下拉列表中。将其保留在那里,但无论如何选择创建一个新连接,并再次选择完全相同的数据库(就好像您正在创建一个新连接)。听起来很傻,但这很关键,见下面的图片.

当我以这种方式添加了一个ADO.NET实体数据模型时,它确实出现了一个恼人的错误,但是下一个按钮是可选的,所有的东西都可以工作(令人惊讶的是)!

设计器工作,检索数据和写入数据工作。

但还没有在另一台机器上测试部署.我用的是Win7 64位.

更改了UPDATE:要获得正确的配置才能真正访问数据库,您必须在执行上述all之后从NuGet安装System.Data.SQLite.EF6包,然后将<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />添加到App.Config并删除其他提供程序并删除<system.data></system.data>之间的所有内容,否则会出现一些异常。但请注意,这意味着每次要更新EDMX模型时,都必须将App.Config invariantName="System.Data.SQLite“更改为invariantName="System.Data.SQLite.EF6”,反之亦然。

**这是不是越来越荒谬了?是的,就是这样!这让我很头疼..。**

票数 18
EN

Stack Overflow用户

发布于 2015-02-17 11:44:56

这就是对我有用的东西:

所以我收到的包裹是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <packages>
      <package id="EntityFramework" version="6.1.1" targetFramework="net451" />
      <package id="System.Data.SQLite" version="1.0.94.1" targetFramework="net451" />
      <package id="System.Data.SQLite.Core" version="1.0.94.0" targetFramework="net451" />
      <package id="System.Data.SQLite.EF6" version="1.0.94.0" targetFramework="net451" />
      <package id="System.Data.SQLite.Linq" version="1.0.94.1" targetFramework="net451" />
    </packages>

为我工作的app.config的内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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>
  <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" />
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <system.diagnostics>
    <sources>
      <!-- This section defines the logging configuration for My.Application.Log -->
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog" />
          <!-- Uncomment the below section to write to the Application Event Log -->
          <!--<add name="EventLog"/>-->
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="DefaultSwitch" value="Information" />
    </switches>
    <sharedListeners>
      <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
      <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
      <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
    </sharedListeners>
  </system.diagnostics>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
  </startup>
  <system.data>
    <!--
        NOTE: The extra "remove" element below is to prevent the design-time
              support components within EF6 from selecting the legacy ADO.NET
              provider for SQLite (i.e. the one without any EF6 support).  It
              appears to only consider the first ADO.NET provider in the list
              within the resulting "app.config" or "web.config" file.
    -->
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="WorkinDataEntities" connectionString="metadata=res://*/WorkinDataModel.csdl|res://*/WorkinDataModel.ssdl|res://*/WorkinDataModel.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=X:\dev\proj\workin\bin\data.db&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

正如您最终所看到的,对我来说,没有必要从invariantName中删除“invariantName”,也没有必要删除或重新排列其他提供程序或默认连接工厂。我不需要做任何黑客攻击。在启动项目的add/remove标记(在NuGet System.Data.SQLite 1.0.94.1包安装过程中添加的标记)中重新排列会产生不同的效果。

在所有这些之后,我通过EntityFramework将NuGet更新为6.1.2,并且通过designer从数据库更新模型和在运行时访问数据仍然有效。

票数 11
EN

Stack Overflow用户

发布于 2015-08-26 06:05:38

最后,我有了一些步骤来一致地向项目中添加Sqlite和EF6:

EF6: 6.0.0版本为6.1.3 (目前是最新版本)。System.Data.Sqlite: 1.0.93-1.0.95,但不是1.0.98 (目前是最新版本)。

为了避免获得System.Data.Sqlite 1.0.98,请不要使用Nuget软件包管理器进行安装。手动安装System.Data.Sqlite。不幸的是,http://system.data.sqlite.org/并没有列出以前的下载。

x86 System.Data.Sqlite 1.093

x64 System.Data.Sqlite 1.093

我使用Nuget并安装EF6,然后手动添加System.Data.Sqlite库。我多次尝试使用1.0.98,但我不能

App.config文件

对于我的实现,我首先使用数据库--手动编写实体数据类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public partial class MyDbContextEF : DbContext
{
    public MyDbContext() : base("name=MyDbContext") { }

    public DbSet<DataRecord> DataRecords { get; set; }
}

[Table("TableName")]
public class DataRecord
{
    [Key]
    public Int64 RowID { get; set; }
    public string Name { get; set; }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25089346

复制
相关文章
使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作
Jensen_97
2023/07/19
1.5K0
python-获取URL中的json数据
数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可。 import urllib.request def get_record(url): resp = urllib.request.urlopen(url) ele_json = json.loads(resp.read()) return ele_json if __name__ == '__main__': print(get_record('http://abc.co/
py3study
2020/01/16
5.5K0
dns url转发_获取url参数的方法
DNSPod是一款免费智能DNS产品,可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
全栈程序员站长
2022/11/02
6.4K0
使用js获取url中的get参数并转成json格式
写在前面的 没啥说的 上代码 思路就是先获取到?后面的参数区,然后 利用字符串转数组方法获取到各个参数 var json = {}; var url = 'https://www.ba
Theone67
2019/11/21
6.3K0
js获取url参数的方法
js获取url参数的方法有很多。 1.正则分析 function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } 调用方法: alert(GetQueryString("
水击三千
2018/02/27
19.7K0
封装获取url参数的方法
功能需求:前端页面来回切换需要我们去获取URL的某个参数值。这时封装一个输入参数名获取对应参数值的函数是很有必要的; //取url上的id function getQueryString(name) { //取url上的id var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r !
青梅煮码
2023/02/18
1.7K0
【API架构】使用 JSON API 的好处
在 API 工艺的世界里,没有比设计更受热议的领域了。从 REST、gRPC 到 GraphQL,有许多方法可以设计和标准化 Web API 交互。今天,我们将注意力转向另一种方法,JSON API,JSONAPI.org 上详细介绍的用于构建 API 的规范。
架构师研究会
2022/05/29
2.8K0
图片url地址的生成获取方法
在写博客插入图片时,许多时候需要提供图片的url地址。作为菜鸡的我,自然是一脸懵逼。那么什么是所谓的url地址呢?又该如何获取图片的url地址呢?
全栈程序员站长
2022/11/08
15.9K0
图片url地址的生成获取方法
封装方法,获取url地址上的参数
https://jiangsihan.cn/?id=123&name=hhh getQueryVariable(variable) { var query = window
江一铭
2022/06/17
1.4K0
封装方法,获取url地址上的参数
php – 通过curl从url获取JSON数据「建议收藏」
我试图通过curl连接从URL获取JSON数据.当我打开链接时:它显示{“version”:“N / A”,“success”:true,“status”:true}. 现在,我希望获得以上内容.
全栈程序员站长
2022/07/11
4K0
javascript/jquery获取地址栏url参数的方法
1、jquery获取url window.location.href; 2.通过javascript是如何获取url中的某个参数 function getUrlParam(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var r = window.location.search.substr(1).match(reg); //匹配目标参数 if (r!=null) return unes
Yiiven
2022/12/15
1.9K0
[转载]javascript/jquery获取地址栏url参数的方法
本篇文章主要是对javascript/jquery获取地址栏url参数的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
小小鱼儿小小林
2020/06/24
3.5K0
如何使用 Go 语言获取 URL?
在 Web 开发和网络爬虫等领域,经常需要获取和处理 URL(统一资源定位符)。Go 语言提供了丰富的标准库来处理 URL,使得获取和解析 URL 变得简单而高效。本文将介绍如何使用 Go 语言获取 URL 的详细步骤,并提供一些实用的示例。
网络技术联盟站
2023/07/03
7810
如何使用 Go 语言获取 URL?
WordPress 获取当前页面 URL 地址的方法
通过 WordPress 原生的函数来,或者自定义函数,都可以获取当前页面的 URL 地址。
Yangsh888
2022/03/24
1.2K0
WordPress 获取 URL 链接路径的几种方法
其实对于 WordPress 开发方面来讲使用 ID 是最为方便快捷的,但是如果在 WordPress 固定链接中也使用文章 ID 等方式来展现虽然足够简单,却也失去了更加漂亮的 URL 以及关键词优化,所以最近子凡在开发百度小程序时需要充分的使用到百度智能小程序的自然搜索功能,需要提交 URL 适配规则,那么对于网站 URL 并不是 ID 的情况来说,小程序如果使用 ID 传参,这个适配规则基本就不在一个空间了。
张子凡
2022/11/02
1.2K0
WordPress 获取 URL 链接路径的几种方法
Akismet插件获取key API的方法
作者:matrix 被围观: 2,308 次 发布时间:2011-09-25 分类:Wordpress 兼容并蓄 | 2 条评论 »
HHTjim 部落格
2022/09/26
6850
Akismet插件获取key API的方法
Python - 使用 Tinyurl API 的 URL 缩短器
在网络时代,简洁的链接对于通过社交网站、短信和其他通信方式分发超链接至关重要。但是,冗长的 URL 可能会在共享时带来挑战,并且在发送消息时可能会被截断。长 URL 通常难以记忆,并且输入起来可能非常笨拙。为了解决手头的问题,创建了诸如TinyURL之类的网址缩短平台来管理职责。Python 提供了一种方便的方法来连接这些选项。在这篇文章中,我们将编写一个Python代码来与TinyURL网站API系统互动。
很酷的站长
2023/08/11
4310
Python - 使用 Tinyurl API 的 URL 缩短器
Vue获取url网址参数的两种方法
2、如果路由中没有传参(https://w3h5.com/detail),会报错页面无法显示。正常链接应该为 https://w3h5.com/detail/234
德顺
2020/04/26
31K1
点击加载更多

相似问题

友好的配置文件URL与控制器混在一起

25

空手道摘要报告在升级到1.0.0后没有显示所有经过测试的特性

12

如何从另一个空手道特性文件中调用依赖JAR中的空手道特性?

10

黄瓜报告中称为特性/场景的空手道显示标题

10

空手道:从被调用的特性文件中处理soap响应

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文