새 Entity Framework에서 코드 첫 번째 접근 방식으로 작업하려고했지만 데이터베이스의 테이블이 자동으로 만들어지지 않았습니다.코드 EF에서 첫 번째 접근 방식이 작동하지 않습니다.
나는 (App_Code 폴더에) 이미 데이터베이스를 생성했으며 코드 첫 번째 접근 방식을 사용합니다. 설명해주세요. 먼저 DB에 테이블을 만들어야합니다. 그렇지 않으면 테이블을 자동으로 만들어야합니까?
add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"
add name="MyDB"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|MyDB.mdf;User Instance=true"
providerName="System.Data.SqlClient"
클래스 (모델 폴더에) 내 객체를 설명하는
public class UserProfile
{
[Key]
[Required]
public string PhoneNumber { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string MiddleName { get; set; }
[Required]
public string Surname { get; set; }
[Required]
public DateTime Birthday { get; set; }
public int PositionId { get; set; }
public string Boss { get; set; }
[Required]
public int CompanyId { get; set; }
}
DbContext : 아래
내가이 연결 문자열이의 Web.config에서 내 프로젝트에 대한 설명입니다 클래스 (모델 폴더 내)
public class MyDB : DbContext
{
//public MyDB() : base("MyDB") { }
public DbSet<UserProfile> UserProfiles { get; set; }
}
데이터베이스에 새로운 (&) 레코드 (테이블이 존재하지 않음)를 삽입하려고하는 컨트롤러에서.
예외 정보 : System.Data.SqlClient.SqlException : 잘못된 개체 이름 'dbo.UserProfiles'나는 예외가
SaveChanges()
를 호출하기 위해 노력하고있어UserProfile newProfile = new UserProfile(); newProfile.CompanyId = 1; newProfile.PhoneNumber = model.PhoneNumber; newProfile.FirstName = model.FirstName; newProfile.MiddleName = model.MiddleName; newProfile.Surname = model.Surname; newProfile.Birthday = Convert.ToDateTime(model.Birthday); var myDb = new Models.MyDB(); myDb.UserProfiles.Add(newProfile); myDb.SaveChanges();
.
두 연결 문자열을 모두 제거하십시오. 사실 그것은 자동으로 데이터베이스를 생성해야합니다. –
그러나 이미 데이터베이스에 테이블 및 데이터가 포함되어 있고 코드가있는 다른 테이블을 추가하는 방법이 있습니까? 이 방법은 효과가 없었습니까? – Pavel
UserProfiles 테이블을 수동으로 생성하면 모든 Ok와 새로운 레코드가 삽입됩니다. 하지만 나는 코드 우선을 원해. :) – Pavel