这适用于具有View表的现有数据库。 试图列出一个View表,但在我的Action中遇到了这个错误信息:
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=ServerA\DBSome; 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(数据库)它可以工作。
有什么想法吗?
答案 0 :(得分:1)
即使你有一个现有的数据库设置,初始化程序也为null:
Database.SetInitializer<SomeDB>(null);
二;强制映射到表名称就可以了:
modelBuilder.Entity<SomeTable>()
.ToTable("SomeTable");
答案 1 :(得分:1)
我通过使用sql server授权帐户sa解决了这个问题,而不是使用windows arthorized帐户。
您可以先通过Windows authoration登录SqlServer管理工具,然后在左侧部分窗口(称为“对象资源管理器”)中找到sa - &gt;您的服务器\ SQLEXPRESS(10.xxx) - &gt;安全 - &gt;登录
双击sa,然后为其设置密码和默认数据库。默认数据库应该是您的数据库而不是“master”。然后,切换到“状态”页面,启用sa帐户。
如果您的数据库尚未列在下拉列表中,请在上面提到的左侧部分窗口中右键单击并选择“附加”以附加它。
并且,连接字符串应为:
connectionString =“Data Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ MFC.mdf; Initial Catalog = MFC; Integrated Security = false; User Id = sa; Password = your_password_here;”
它对我有用。