我正在使用 Entity Framework,最近开始意识到在同一解决方案的另一个项目中使用您的 EF 模型的好处,这样我就可以从中构建多个 UI。
我将它移到了一个新的类库项目中,并更新了对 Web 项目中实体的所有引用,以使用该项目生成的新 dll。一切都很顺利,除了一个小问题。当我将 EF 移至新项目时,它仍然以某种方式从 Web 项目中的 web.config 读取其连接字符串(不要问我如何,因为我不知道)。
我在 EF 设计器中使用了“从数据库更新模型”,但它没有找到连接字符串(正如我在将其移至新项目后预期的那样)所以我使用向导生成了一个新的连接字符串,它做得很好。新的连接字符串现在驻留在类库项目的 App.config 中。属性窗口中的连接字符串现在是正确的,设计人员正在从 App.Config 中读取它。我继续从 Web 项目的 Web.Config 中删除了连接字符串。
现在运行应用程序时出现以下错误:
The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
如果我将连接字符串粘贴回 Web.Config,一切正常。我不想从头开始创建一个新的 EF 模型,因为它是一个相当复杂的模型,并且在从数据库中拉入后我做了很多重组。我已经遍历了生成的 CS 文件以及 edmx 文件中的 XML,但找不到任何有用的东西。任何帮助深表感谢。显然现在,在我弄清楚之前,我只是将连接字符串留在 web.config 中,因为无论出于何种原因,这似乎都有效。
最佳答案
这是设计使然;虽然类库中的配置文件是设计人员将使用的,但实际应用程序 的配置文件将在运行时使用。无论是 ASP.NET 项目的 Web.config 还是 Winforms 或 WPF 项目的 App.config,都将使用应用程序配置文件(或更高级别的文件,如 Machine.config);类库中的文件不是应用程序的一部分。
如果您尝试提供无需在应用程序或 Web 配置文件中指定连接字符串即可工作的 EF 模型,那么您将不得不以其他方式存储连接字符串(您总是很难-对其进行编码)并将其传递到上下文构造函数的适当重载中。
我的解决方案通常是在上下文本身上提供一个静态无参数函数,该函数使用适当的连接字符串调用此重载。
关于c# - 将 Entity Framework 模型从 Web 项目移动到类库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939577/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport: