2014-02-08 61 views
-1

我正在開發一個C#MVC 4互聯網應用程序,我有一個關於將項目添加到列表的問題。被添加到列表中的對象沒有被存儲在數據庫中

這裏是我的類代碼:

public class MapLocationCompany 
{ 
    public MapLocationCompany() 
    { 
     MapLocationList = new List<MapLocation>(); 
    } 

    [Key] 
    public int id { get; set; } 
    public List<MapLocation> MapLocationList { get; set; } 
} 

public class MapLocationCompanyContext : DbContext 
{ 
    public DbSet<MapLocationCompany> MapLocationCompanies { get; set; } 
} 

我創建一個MapLocation對象添加到MapLocationListMapLocationCompany類。

這裏是我的代碼:

private MapLocationCompanyContext mlcc = new MapLocationCompanyContext(); 

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(int id, MapLocation maplocation) 
{ 
    if (ModelState.IsValid) 
    { 
     MapLocationCompany mapLocationCompany = new MapLocationCompany(); 
     mapLocationCompany = cs.getMapLocationCompany(id); 
     mapLocationCompany.MapLocationList.Add(maplocation); 
     mlcc.SaveChanges(); 
     return RedirectToAction("MapLocations", "Company", new { id = id }); 
    } 

    return View(maplocation); 
} 

這裏是cs.getMapLocationCompany功能是在不同的類

public MapLocationCompany getMapLocationCompany(int id) 
{ 
    return db.MapLocationCompanies.Where(c => c.id == id).FirstOrDefault(); 
} 

的DB是一個MapLocationCompanyContext對象。

Create函數中的maplocation對象沒有存儲在數據庫中。

我可以請這個代碼幫忙嗎?

在此先感謝

編輯

我可以請有一定的幫助的MapLocation對象添加到使用上下文列表?

這裏是我目前正在使用的代碼:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(int id, MapLocation maplocation) 
{ 
    if (ModelState.IsValid) 
    { 
     MapLocationCompany mapLocationCompany = new MapLocationCompany(); 
     mapLocationCompany = cs.getMapLocationCompany(id); 
     mlcc.MapLocationCompanies.Where(c => c.id == id).FirstOrDefault().Add(maplocation); 
     mlcc.SaveChanges(); 
     return RedirectToAction("MapLocations", "Company", new { id = id }); 
    } 

    return View(maplocation); 
} 

這是我收到的錯誤:

「CanFindLocation.Classes.MapLocationCompany」不包含定義「添加'沒有擴展方法‘添加’接受一個類型的第一個參數‘CanFindLocation.Classes.MapLocationCompany’可以發現

我如何添加一個反對清單,知道MapLocationCompany的ID?

+0

您從不向上下文添加任何內容。你只是創建一個對象然後保存上下文。 –

+0

你可以看看我的編輯? – Garry

回答

0

您試圖直接添加MapLocation這裏的MapLocationCompany對象:

mlcc.MapLocationCompanies.Where(c => c.id == id).FirstOrDefault().Add(maplocation); 

這是不正確。您想將其添加到MapLocationCompany對象的MapLocationList屬性。這可能會使它更清晰:

var company = mlcc.MapLocationCompanies.Where(c => c.id == id).FirstOrDefault(); 

if (company != null) { 
    company.MapLocationList.Add(mapLocation); 
} 
+0

上面的代碼確實將地圖位置添加到了列表中,並且似乎將其保存,但是,如果我嘗試向列表中添加另一個對象,則以前的對象不存在...... – Garry

+0

這聽起來完全是另一個問題。聽起來就像你在代碼中有一個列表,但在數據庫端是一對一的。雖然我會期待一個錯誤... –

相關問題