我遇到了这里描述的确切问题(阅读"无法附加到删除的MDF文件"部分),但问题的解决方案没有告诉那里......
简而言之,问题是在删除.mdf文件后,当我尝试使用EF 5.0访问数据库时,抛出以下异常.
DataException-> EntityException-> SqlException:
无法将文件"{0}"附加为数据库"{1}"
我确实删除了DB文件,现在我在运行应用程序期望它使用它的初始化程序时得到那个讨厌的错误消息.有任何解决这个问题的方法吗?
sql-server asp.net-mvc entity-framework-5 localdb visual-studio-2012
我想知道如何为生产数据库运行'Update-Database'命令.
"更新 - 数据库"数据库在我的本地计算机上运行良好,但如何使其适用于生产数据?
因此,如果我对我的应用程序进行更改,然后通过visual studio运行"发布",这对于代码方面的工作正常,但是如何为生产数据运行"Update-Database"命令.
希望这个问题有道理......
谢谢,
我使用Entity Framework Code First开始了我的项目.当我准备好时,我将我的数据库和代码上传到我的主机提供商.一切正常.
我需要在我的一个类中添加一个新字段,我不想丢失数据库中的数据.因此,我尝试了一些关于使用Code First Migrations的博客文章.我做了以下事情:
当我访问该网站时,我收到以下错误消息:自创建数据库以来,支持'blahblah'上下文的模型已更改.考虑使用Code First Migrations来更新数据库.
我究竟做错了什么?
我创建了一个Code First类
数据库是在Sql中自动创建的.
我删除了表:(
我启用了迁移:
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
Database.SetInitializer(new DropCreateDatabaseAlways<SurveyContext>());
Run Code Online (Sandbox Code Playgroud)
然而
update-database -force
Cannot find the object "dbo.CustomerResponses" because it does not exist or you do not have permissions.
Run Code Online (Sandbox Code Playgroud)
请帮忙.
这是我在这里的第一篇文章,所以请原谅任何错误:)
我目前正在研究库存管理应用程序(Laravel).我发现我做的任何事情都没有用,所以现在我求求它.
我有一张产品表,其中一些与其他产品有关系.一切都发生在一张桌子上.如果产品有孩子,则孩子会覆盖父母.
然后,我在它们上运行的所有查询都使用以下逻辑:
现在我在模型文件中创建了关系:
public function childItems(){
return $this->hasMany('\App\OrderItem','parent_id');
}
public function parentItem(){
return $this->belongsTo('\App\OrderItem','parent_id');
}
public function latestChild(){
return $this->hasOne('\App\OrderItem','parent_id')->orderBy('id','desc')->limit(1);
}
Run Code Online (Sandbox Code Playgroud)
latestChild()关系的问题是,当您运行此查询时:
\App\OrderItem::find(7)->latestChild()->get()
Run Code Online (Sandbox Code Playgroud)
它工作正常,只返回一个(最新)(id 6)记录关系 - 为此我必须添加orderBy并限制为hasOne().
但是当我想在范围中使用这种关系时,所以在whereHas方法中,它不能正常工作,因为它取代了任何一个孩子而不是最新的孩子.
public function scopeDue($query){
return $query->where(function($q){
$q->has('childItems','==',0)->has('parentItem','==',0)->whereDate('due_date','=', Carbon::today()->toDateString())->whereNull('return_date');
})->orWhere(function($q2){
$q2->has('childItems')->has('parentItem','==',0)->whereHas('childItems',function($q3) use($q2){
$q3->whereDate('due_date','=', Carbon::today()->toDateString())->whereNull('return_date');
});
})->with('latestChild');
}
Run Code Online (Sandbox Code Playgroud)
但是,最后用()返回正确的记录.
我认为,它的工作原因是因为我的关系latestChild()返回所有子节点(尽管有hasOne()),当我在where中使用它时它忽略了我应用的过滤函数.
我知道它与我描述的有点复杂,但为了更好地解释它,我会用一个例子.在修补匠中执行以下操作
\App\OrderItem::due()->get();
Run Code Online (Sandbox Code Playgroud)
应该只返回记录ID 2,因为数字7有孩子,当然id 5到期,但最新的孩子是id 6,这是未到期的.
我希望我已经解释得足以让你帮助我了,因为我已经疯了.如果您对如何通过更改现有或改变其整体逻辑来实现我所需要的任何想法,请帮助!
谢谢,Darek
我正在按照教程制作 dotnet 2 rest api,并期望 dotnet cli 在 dotnet ef 更新后生成数据库。但它没有发生
我有这个上下文类
public class DutchContext : DbContext
{
public DutchContext(DbContextOptions<DutchContext> options): base(options)
{
public DbSet<Product> Products { get; set; }
public DbSet<Order> Orders { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在 StartUp.cs 中调用 con 字符串的方式
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMailService, NullMailService>();
// support for real mail service
services.AddMvc();
services.AddDbContext<DutchContext>(cfg =>
{
cfg.UseSqlServer(_config.GetConnectionString("ConnectionString"));
});
}
Run Code Online (Sandbox Code Playgroud)
以及保存 con 字符串的 config.json
{
"ConnectionStrings": {
"ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=EstudoDotnetDB;Integrated Security=true;MultipleActiveResultSets=true"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 localdb > (localdb)\MSSQLLocalDB …
asp.net-mvc ×2
.net ×1
.net-core ×1
c# ×1
code-first ×1
eloquent ×1
laravel ×1
localdb ×1
relationship ×1
sql-server ×1