我想從Asp.NET MVC網站使用LINQ to Entities的教程,但我決定使用LINQ to SQL代替。我正在創建一個新的表,名爲Groups,它與Contacts表有關係。從本質上講,這是一個一對多的關係,一個集團可以有很多聯繫人,一個聯繫人只能有一個集團。請參閱下面的示例代碼和CRUD操作。LINQ to SQL在ASP.NET MVC和倉庫模式
我不知道如何在LINQ to SQL中實現這一點。例如,如何在LINQ to SQL中執行此操作:
return _entities.GroupSet.Include(「Contacts」)。FirstOrDefault();
你應該爲兩張桌子做一個JOIN或者有另外一種方法嗎?
例CODE:
using System.Collections.Generic;
using System.Linq;
using System;
namespace ContactManager.Models
{
public class EntityContactManagerRepository : ContactManager.Models.IContactManagerRepository
{
private ContactManagerDBEntities _entities = new ContactManagerDBEntities();
// Contact methods
public Contact GetContact(int id)
{
return (from c in _entities.ContactSet.Include("Group")
where c.Id == id
select c).FirstOrDefault();
}
public Contact CreateContact(int groupId, Contact contactToCreate)
{
// Associate group with contact
contactToCreate.Group = GetGroup(groupId);
// Save new contact
_entities.AddToContactSet(contactToCreate);
_entities.SaveChanges();
return contactToCreate;
}
public Contact EditContact(int groupId, Contact contactToEdit)
{
// Get original contact
var originalContact = GetContact(contactToEdit.Id);
// Update with new group
originalContact.Group = GetGroup(groupId);
// Save changes
_entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
_entities.SaveChanges();
return contactToEdit;
}
public void DeleteContact(Contact contactToDelete)
{
var originalContact = GetContact(contactToDelete.Id);
_entities.DeleteObject(originalContact);
_entities.SaveChanges();
}
public Group CreateGroup(Group groupToCreate)
{
_entities.AddToGroupSet(groupToCreate);
_entities.SaveChanges();
return groupToCreate;
}
// Group Methods
public IEnumerable<Group> ListGroups()
{
return _entities.GroupSet.ToList();
}
public Group GetFirstGroup()
{
return _entities.GroupSet.Include("Contacts").FirstOrDefault();
}
public Group GetGroup(int id)
{
return (from g in _entities.GroupSet.Include("Contacts")
where g.Id == id
select g).FirstOrDefault();
}
public void DeleteGroup(Group groupToDelete)
{
var originalGroup = GetGroup(groupToDelete.Id);
_entities.DeleteObject(originalGroup);
_entities.SaveChanges();
}
}
}
邁克爲什麼不去與實體框架?在.NET 4和4.5 DP中,微軟有點像Linq to Sql,所以爲什麼要使用它?如果你正在開始一個新項目,我強烈建議使用EF –
Argh ...我希望能夠使用Linq到SQL,因爲我更熟悉它。我已經在嘗試學習MVC,並且我不想同時學習EF。我想我會改變我的解決方案來使用EF。謝謝您的幫助。 – MikeB55