2013-05-13 4 views
0

Я использую существующую базу данных для создания системы отчетности по проектам. И я хочу, чтобы первичный ключ, который является значением идентификатора проекта для таблицы проекта, должен быть автоматически создан, и он не устанавливает новое значение, так как мне нужно ввести идентификатор, но я не хочу, чтобы пользователь это делал. Может ли кто-нибудь помочь мне с этой проблемой, пожалуйста?Существующий столбцы индекса базы данных MVC 4

Патрик

Контроллер `// // GET:/Проект/Создать

public ActionResult Create() 
    { 
     ViewBag.Status = new SelectList(db.pjt_Statuses, "pjt_Status_ID", "StatusName"); 
     ViewBag.SubCategoryID = new SelectList(db.pjt_SubCategories, "pjt_SubCat_ID", "SubCatName"); 
     return View(); 
    } 

    // 
    // POST: /Project/Create 

    [HttpPost] 
    public ActionResult Create(pjt_Projects pjt_projects) 
    { 
     if (ModelState.IsValid) 
     { 
      pjt_projects.CreationDate = DateTime.Now; 
      db.pjt_Projects.Add(pjt_projects); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.Status = new SelectList(db.pjt_Statuses, "pjt_Status_ID", "StatusName", pjt_projects.Status); 
     ViewBag.SubCategoryID = new SelectList(db.pjt_SubCategories, "pjt_SubCat_ID", "SubCatName", pjt_projects.SubCategoryID); 
     return View(pjt_projects); 
    }` 

таблицы базы данных сценария

`CREATE TABLE [dbo].[pjt_Projects](
[Pjt_Id] [int] IDENTITY(1,1) NOT NULL, 
[ProjectName] [nchar](100) NULL, 
[Status] [int] NULL, 
[Start_Date] [date] NULL, 
[Estimated_End_Date] [date] NULL, 
[Documents] [nvarchar](max) NULL, 
[Notes] [nvarchar](max) NULL, 
[Budget] [smallmoney] NULL, 
[Current_Spending] [smallmoney] NULL, 
[ProjectOwner] [nvarchar](50) NULL, 
[Active] [bit] NULL, 
[Actual_End_date] [date] NULL, 
[CreationDate] [date] NULL, 
[CreatedByEmpNo] [nchar](10) NULL, 
[UpdateDate] [date] NULL, 
[UpdatedByEmpNo] [nchar](10) NULL, 
[SubCategoryID] [int] NULL,` 


**Generate Context Db Code** 
    public int Pjt_Id { get; set; } 
    public string ProjectName { get; set; } 
    public Nullable<int> Status { get; set; } 
    public Nullable<System.DateTime> Start_Date { get; set; } 
    public Nullable<System.DateTime> Estimated_End_Date { get; set; } 
    public string Documents { get; set; } 
    public string Notes { get; set; } 
    public Nullable<decimal> Budget { get; set; } 
    public Nullable<decimal> Current_Spending { get; set; } 
    public string ProjectOwner { get; set; } 
    public Nullable<bool> Active { get; set; } 
    public Nullable<System.DateTime> Actual_End_date { get; set; } 
    public Nullable<System.DateTime> CreationDate { get; set; } 
    public string CreatedByEmpNo { get; set; } 
    public Nullable<System.DateTime> UpdateDate { get; set; } 
    public string UpdatedByEmpNo { get; set; } 
    public Nullable<int> SubCategoryID { get; set; }  
+1

Нужен какой-то пример кода, иначе мы понятия не имеем, о чем вы действительно спрашиваете. – EkoostikMartin

+0

@EkoostikMartin Что вы хотите, чтобы я показывал ... – PatrickMelia

+0

Покажите нам, что у вас есть, это будет хорошей отправной точкой. –

ответ

0

Просто исключить поле идентификатора из вид бритвы. (Само собой разумеется, если вы не используете EditorForModel, и в этом случае вам нужно будет изменить аннотацию Display для поля ID, чтобы двигатель Razor знал, чтобы исключить его из представления.)

После исключения его значение не будет отправляться обратно на сервер. Таким образом, он будет получать значение по умолчанию при создании в контроллере MVC; и база данных будет автоматически генерировать новый идентификатор.

Смежные вопросы