먼저 Entityframework 코드를 사용하여 ASP.NET MVC 4 앱을 구현하려고합니다. 실제로 2 데이터 컨텍스트, 사용자 지정 및 기본 UsersContext 있습니다.EntityFramework 코드 우선 마이그레이션
namespace Namespace.Models
{
public class StoreDB : DbContext
{
public DbSet<Supplier> Suppliers { get; set; }
public DbSet<Vendor> Vendors { get; set; }
public DbSet<Product> Products { get; set; }
}
}
및
public class UsersContext : DbContext
{
public UsersContext() : base("StoreDB")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
아마 문 public UsersContext() : base("StoreDB")
은 잘못된 것입니다. 하지만 기본값 인 : base("DefaultConnection")
을 남겨 두었을 때 DefaultConnection
데이터베이스가 생성되었고 "StoreDB"라는 데이터베이스가 하나뿐이었습니다.
Database.SetInitializer(new Namespace.Models.StoreDbInitializer());
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Namespace.Models.UsersContext>());
을하지만 응용 프로그램을 실행할 때, 나는이 오류가 발생합니다 :
나는 어떤UsersContext
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public DateTime? DoB { get; set; }
}
에 속하는 UserProfile
로 변경 그리고 나는 다음과 같은 Global.asax에 업데이트했다 :
CREATE DATABASE permission denied in database 'master'.
왜 데이터베이스를 만들려고합니까? "주인"?
<add name="StoreDB"
connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=SSPI; MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"/>
내가 실수하지 않으면 SQL Server 인스턴스에 데이터베이스를 추가 할 때 master db의 테이블에 항목이 기록됩니다. 즉, DB를 만들려고하면 Master db에 대한 권한이 있어야합니다. [Microsoft의 마스터 DB 페이지] (http://msdn.microsoft.com/en-us/library/ms187837.aspx) –
안녕하세요,하지만 내 목표는 master db를 사용하지 않는 것입니다. 저는 광산을 사용하고 싶습니다. '내가 이미 프로덕션으로 옮길 때 EF와 관련된 문제가 생길까 걱정됩니다. DB를 제어 할 수 없다면 모든 것을 바꿀 것입니다. ( – Davide
마스터 db는 모든 데이터베이스의 목록을 유지합니다. 그래서 당신이 당신의 DB 인'StoreDB'에 연결할 때, SQL Server는 마스터 DB에서 해당 DB에 대한 엔트리를 검색 할뿐만 아니라 다른 것들 (예를 들어, 내 이해가 마스터 데이터베이스에 더 이상 보관되지 않음)을 조회 할 것입니다. .기본적으로 마스터 db가 없으면 SQL Server를 사용할 수 없습니다. –