查询 returns 没有数据,即使我可以在 ASP.NET 4.5 中访问数据库
Query returns no data, even though I can access the DataBase in ASP.NET 4.5
我在 .NET Framework 4.5 下发布了一个 ASP.NET MVC 5 应用程序。
服务器是 Windows 2012 R2 专用服务器。数据库的框架是MS SQL Server 2016.
我将 connectionString 更改为:
<connectionStrings >
<add name="ApplicationDbContext"
connectionString="Server=server.de;Database=DataBase;User ID=UserName;Password=xxxxxxxx;Trusted_Connection=False;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
当我之后构建项目时,服务器资源管理器刷新,我可以看到数据库。此外,我现在可以从服务器资源管理器完全访问数据库。
但不知何故,我项目中的每个查询returns都没有数据。
因此,我尝试从控制器方法访问数据库:
using (SqlConnection s = new SqlConnection("Data Source=server.de;Initial Catalog=DataBase;Integrated Security=False;User ID=UserName;Password= xxxxxxxx "))
{
s.Open();
SqlCommand cmd = s.CreateCommand();
cmd.CommandText = "SELECT * FROM AspNetUsers;";
string allUsers = (string)cmd.ExecuteScalar();
}
像这样访问数据库非常有效。
为什么我不能通过我的标准 DB-Context 访问数据库?它仅适用于代码中的 SqlConnection。
ConnectionString 正确吗?我是不是忘记了什么?
(我已经在 VS 中将 SSTP 更新为 2016)
这是我的数据库上下文:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
public int? BauunternehmenId { get; set; }
public virtual Bauunternehmen Bauunternehmen { get; set; }
public int? BauherrId { get; set; }
public virtual Bauherr Bauherr { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public virtual DbSet<Bauunternehmen> MyBauunternehmen { get; set; }
public virtual DbSet<Bauherr> MyBauherr { get; set; }
public virtual DbSet<Baustelle> MyBaustelle { get; set; }
public virtual DbSet<Kamera> MyKamera { get; set; }
public virtual DbSet<Kameraprojekt> MyKameraprojekt { get; set; }
public virtual DbSet<Bild> MyBild { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
什么是默认连接?您不显示此连接字符串.... base 应指向 ApplicationDbContext
例如 base("ApplicationDbContext")
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationDbContext", throwIfV1Schema: false)
{
}
我在 .NET Framework 4.5 下发布了一个 ASP.NET MVC 5 应用程序。 服务器是 Windows 2012 R2 专用服务器。数据库的框架是MS SQL Server 2016.
我将 connectionString 更改为:
<connectionStrings >
<add name="ApplicationDbContext"
connectionString="Server=server.de;Database=DataBase;User ID=UserName;Password=xxxxxxxx;Trusted_Connection=False;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
当我之后构建项目时,服务器资源管理器刷新,我可以看到数据库。此外,我现在可以从服务器资源管理器完全访问数据库。 但不知何故,我项目中的每个查询returns都没有数据。 因此,我尝试从控制器方法访问数据库:
using (SqlConnection s = new SqlConnection("Data Source=server.de;Initial Catalog=DataBase;Integrated Security=False;User ID=UserName;Password= xxxxxxxx "))
{
s.Open();
SqlCommand cmd = s.CreateCommand();
cmd.CommandText = "SELECT * FROM AspNetUsers;";
string allUsers = (string)cmd.ExecuteScalar();
}
像这样访问数据库非常有效。
为什么我不能通过我的标准 DB-Context 访问数据库?它仅适用于代码中的 SqlConnection。 ConnectionString 正确吗?我是不是忘记了什么?
(我已经在 VS 中将 SSTP 更新为 2016)
这是我的数据库上下文:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
public int? BauunternehmenId { get; set; }
public virtual Bauunternehmen Bauunternehmen { get; set; }
public int? BauherrId { get; set; }
public virtual Bauherr Bauherr { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public virtual DbSet<Bauunternehmen> MyBauunternehmen { get; set; }
public virtual DbSet<Bauherr> MyBauherr { get; set; }
public virtual DbSet<Baustelle> MyBaustelle { get; set; }
public virtual DbSet<Kamera> MyKamera { get; set; }
public virtual DbSet<Kameraprojekt> MyKameraprojekt { get; set; }
public virtual DbSet<Bild> MyBild { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
什么是默认连接?您不显示此连接字符串.... base 应指向 ApplicationDbContext
例如 base("ApplicationDbContext")
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationDbContext", throwIfV1Schema: false)
{
}