这适用于具有视图表的现有数据库。尝试列出视图表,但在我的操作中遇到了此错误消息:
CREATE DATABASE permission denied in database 'master'.
要访问的视图表称为:SomeTable
如果在数据库上运行以下命令 (ServerA_dev_alpha_custom):
sp_helptext 'SomeTable'
你会得到这个:
CREATE VIEW dbo.[SomeTable] AS SELECT * FROM ServerA_dev_alpha.dbo.[SomeTable]
这是模型:
public class SomeTable
{
[Key]
public virtual string SomeTableid { set; get; }
public virtual string name { set; get; }
public virtual string formvalue { set; get; }
public virtual string status { set; get; }
public virtual DateTime CreateDate { set; get; }
}
类名:
public class SomeDB: DbContext
与连接字符串名称完全匹配:
<add name ="SomeDB"
connectionString ="data source=ServerADBSome; integrated Security=SSPI; initial catalog=ServerA_dev_alpha_custom"
providerName="System.Data.SqlClient"/>
在创建模型时发现错误:
SomeDB _db = new SomeDB();
var model = (from c in _db.SomeTable
orderby c.CreateDate descending
select c).Take(20);
当我更改连接字符串以指向定义表的位置时:ServerA_dev_alpha(数据库)它有效。
有什么想法吗?
即使您有一个现有的数据库将初始值设定项设置为 null 也可以:
Database.SetInitializer<SomeDB>(null);
其次;强制映射到表名可以解决问题:
modelBuilder.Entity<SomeTable>()
.ToTable("SomeTable");
我通过使用sql server授权帐户sa而不是Windows项目化帐户来解决此问题。
您可以通过先通过Windows授权登录SqlServer管理工具,然后在左侧部分窗口(称为"对象资源管理器")中找到sa-> You Server\SQLEXPRESS(10.xxx) -> 安全性 ->登录名
双击 sa,然后为其设置密码和默认数据库。默认数据库应该是您的数据库,而不是"master"。然后,切换到"状态"页面,启用sa帐户。
如果您的数据库尚未在下拉列表中列出,请在上面提到的左侧部分窗口中,右键单击并选择"附加"以附加它。
并且,连接字符串应为:
connectionString="Data Source=.\SQLEXPRESS;附加数据库文件名=|DataDirectory|\MFC.mdf;Initial Catalog=MFC;Integrated Security=false;用户 ID =sa;密码=your_password_here;"
它对我有用。