我们有一个已部署到各种客户端的数据库.我们目前正在引入一个可选的新功能,该功能将要求希望该功能的客户将新表添加到现有数据库中.
正在我们推出一款新软件,无论是否有新表,都必须与数据库版本进行交互(因为我们不希望有2个版本用于拥有新表的客户和一个用于不是)我们想知道是否有可能以编程方式确定(使用实体框架)数据库中是否存在表(我可以尝试访问该表并让它抛出异常但是想知道是否有内置函数去做这个)
谢谢
编辑:鉴于人们告诉我我应该使用配置文件不检查EF,任何人都可以指导我如何检查配置文件,例如,mvc控制器的自定义数据注释.就像是:
[Boolean(Properties.Settings.Default.TableExists)]
public class NamedController : Controller
Run Code Online (Sandbox Code Playgroud)
如果错误,会抛出未找到的页面?
编辑2:根据人们给出的建议使用配置设置,我最终得到了以下解决方案
用于设置表是否存在的应用程序设置
<appSettings>
<add key="tableExists" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
自定义数据注释,以说明是否允许访问控制器
[AuthoriseIfTableExistsIsTrue]
public class NamedController : Controller
Run Code Online (Sandbox Code Playgroud)
自定义授权的代码
public class AuthoriseIfTableExistsIsTrue : AuthorizeAttribute
{
private readonly bool _tableExists;
public AuthoriseIfTableExistsIsTrue()
{
_tableExists = string.Equals(bool.TrueString, ConfigurationManager.AppSettings["tableExists"], StringComparison.InvariantCultureIgnoreCase);
}
public AuthoriseIfTableExistsIsTrue(bool authorise)
{
_tableExists = authorise;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (_tableExists)
return base.AuthorizeCore(httpContext);
else
throw new HttpException(404, "HTTP/1.1 404 Not Found");
}
}
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助,并告诉我不要使用EF,而是使用配置设置
如何在MSTest中断言返回的集合的顺序是否正确?
[TestMethod]
public void when_sorting_movies_it_should_be_able_to_sort_all_movies_by_title_descending()
{
populateTestMovies(movie_collection);
MovieLibrary movieLibrary = new MovieLibrary(movie_collection);
IEnumerable<Movie> results = movieLibrary.sort_all_movies_by_title_descending();
Assert.IsTrue(results.Contains(theres_something_about_mary));
Assert.IsTrue(results.Contains(the_ring));
Assert.IsTrue(results.Contains(shrek));
Assert.IsTrue(results.Contains(pirates_of_the_carribean));
Assert.IsTrue(results.Contains(indiana_jones_and_the_temple_of_doom));
Assert.IsTrue(results.Contains(cars));
Assert.IsTrue(results.Contains(a_bugs_life));
Assert.AreEqual(7, results.Count());
}
Run Code Online (Sandbox Code Playgroud) 我有一个包装类(BluetoothDiscoverer),它在服务中实例化.此类获取BluetoothAdapter并在扫描相邻设备之前检查是否启用了蓝牙.
现在,如果未启用蓝牙,我希望能够在此类(BluetoothDiscoverer)中执行以下操作:
Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetoothIntent, BLUETOOTH_ENABLER);
Run Code Online (Sandbox Code Playgroud)
现在我已经读过这个:从非活动中使用startActivityForResult
但是我不想将我的主要活动传递给这个对象,因为我想在BluetoothDiscoverer类中处理结果(用户是否接受启用蓝牙).
现在如果我使BluetoothDiscoverer成为Activity的子类
当startActivityForResult即将被调用时,我似乎得到了一个NullPointerException.
我认为这是因为我需要添加一个onCreate()/ onDestroy()方法,但这违背了我正在做的目的,因为我需要能够在实例化该类的服务中调用BluetoothDiscoverer对象上的方法.
我还需要注册广播接收器,以便在启动扫描时检索相邻设备.如果BluetoothDiscoverer类不是Activity,我该如何注册此接收器?
有没有解决这个问题?
谢谢安德烈亚斯
我正在尝试使用Codeigniters电子邮件类将模板加载到电子邮件中,但是我收到的电子邮件是黑色的,有人可以告诉我为什么吗?以下是我的代码,
if($this->session->userdata('group_id') == '1') {
$data['key'] = $insertUser['activation_key'];
$data['name'] = $insertUser['name'];
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => '*********',
'smtp_pass' => '********',
'mailtype' =>'html'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from('no-reply@email.com', 'Email');
$this->email->to($insertUser['email']);
$this->email->subject('Your employers account');
$this->email->message($this->load->view('emails/signup', $data));
if (!$this->email->send())
show_error($this->email->print_debugger());
else
redirect('admin/users');
}
Run Code Online (Sandbox Code Playgroud) 我的ASP.NET应用程序使用的是没有强名称的程序集.当我在IE中运行它时,它显示错误说:
无法加载文件或装配'xxxxx'.或其中一个依赖项.强名称signatuer无法验证.程序集可能已被篡改,或者是延迟签名但未使用正确的私钥完全签名.(HRESULT异常:0x80131045)"
我sn.exe -Vr xxxx用来注册该程序集以跳过强名称验证,但它仍显示该错误.什么可能导致这个问题,我可以做些什么来解决它?
我正在寻找一种方法来精简旧备份。备份每天运行,我想随着备份变旧而增加间隔。
几天后,我想删除每日备份,只留下“周日”备份。几周后,仅应删除一个月中可用的第一个备份。
由于我正在处理历史备份,因此我不能只更改命名方案。
我尝试使用“查找”来查找,但找不到正确的选项。
有人有什么可以帮忙的吗?
例如:
如果我有一个Unicode字符串:\ u4E45
我想用JavaScript将这个角色显示在网页上.我能怎么做?
我的第二个问题是,如果我有一个汉字:依
我想用JavaScript获取它的Unicode(\ u4F9D).我能怎么做?
非常感谢你!
我正在编写一个dbm样式的数据库管理器,其中包含不可变的B + Trees作为存储介质(请参阅http://sf.net/projects/aodbm/).是否存在用于合并两个B +树的快速算法(树可能共享节点)?
我在类中有一个字段,其随机名称如下:
class Foo {
public string a2de = "e2"
}
Run Code Online (Sandbox Code Playgroud)
我在另一个变量中有这个字段的名称,如:
string vari = "a2de"
Run Code Online (Sandbox Code Playgroud)
我可以a2de使用值来获取或设置字段的值vari吗?
喜欢:
getvar(vari)
Run Code Online (Sandbox Code Playgroud)
要么
setvar(vari) = "e3"
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×1
algorithm ×1
android ×1
asp.net ×1
asp.net-mvc ×1
assemblies ×1
backup ×1
bluetooth ×1
codeigniter ×1
email ×1
field ×1
javascript ×1
linq ×1
linux ×1
php ×1
reflection ×1
service ×1
strongname ×1
tree ×1
unicode ×1
winforms ×1