2

这适用于具有 View 表的现有数据库。试图列出一个视图表,但在我的操作中遇到了这个错误消息:

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 (database) 它可以工作。

有任何想法吗?

4

2 回答 2

1

即使您有一个现有的数据库,将初始化程序设置为 null 也可以:

Database.SetInitializer<SomeDB>(null);

第二; 强制映射到表名就可以了:

modelBuilder.Entity<SomeTable>()
.ToTable("SomeTable");
于 2012-06-27T03:38:13.403 回答
1

我通过使用 sql server 授权帐户 sa 而不是 windows 授权帐户解决了这个问题。

您可以先通过windows授权登录SqlServer管理工具,然后在左侧部分窗口(称为“对象资源管理器”)-> You Server\SQLEXPRESS(10.xxx) -> Security -> Logins中找到sa

双击sa,然后为其设置密码和默认数据库。默认数据库应该是您的数据库而不是“主数据库”。然后,切换到“状态”页面,启用 sa 帐户。

如果您的数据库还没有在下拉列表中列出,在上面提到的左侧部分窗口中,右键单击并选择“附加”以附加它。

而且,连接字符串应该是:

connectionString="数据源=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MFC.mdf;初始目录=MFC;集成安全=false;用户ID=sa;密码=your_password_here;"

这个对我有用。

于 2013-08-30T09:08:08.983 回答