我想从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