我的"Bookshelf"测试应用程序中有两个POCO:
/// <summary>
/// Represents a book
/// </summary>
public class Book
{
public int ID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string ISBN { get; set; }
public virtual Loaner LoanedTo { get; set; }
}
/// <summary>
/// Represents a Loaner
/// </summary>
public class Loaner
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Book> Loans …Run Code Online (Sandbox Code Playgroud) 如何对父子关系进行急切查询:
如果我试试
from p in _context.Parents.Include("children")
join c in _context.childrenon p.Id equals c.ParentId
where d.DeletedDate == null
orderby p.Name ascending, c.Name
select p
Run Code Online (Sandbox Code Playgroud)
然后我得到了Parent对象,但是每个Parent对于孩子都有NULL
如果我试试
from p in _context.Parents.Include("children")
orderby p.Name ascending
select p
Run Code Online (Sandbox Code Playgroud)
查询将返回所有父项和子项,但不会对其进行过滤或排序.
我想要的结果是IEnumerable<Parent>
ie
Parent[0].name = "foo"
Parent[0].children = IEnumerable<Child>
Parent[1].name = "bar"
Parent[1].children = IEnumerable<Child>
Run Code Online (Sandbox Code Playgroud) 我是lambda表达式和linq的新手,无法弄清楚我在做错了什么:
GroupSet groupToChange = context.GroupSet.Select(q => q.groupId == groupId);
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取并更改实体的名称.
groupToChange.groupName = newGroupName;
Run Code Online (Sandbox Code Playgroud)
我对第二行没有任何问题.有任何想法吗?它告诉我,我无法将bool转换为GroupSet,但该函数返回它找到的内容,对吧?
我在GridView中设置了这样的ItemTeplate:
<asp:TemplateField HeaderText="Building">
<ItemTemplate>
<asp:Label
ID="lblBuilding"
Text='<%# Bind("Building1.building_name") %>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:EntityDataSource
ID="EditHousingDataSource"
runat="server"
EnableDelete="true"
ConnectionString="name=pbu_housingEntities"
DefaultContainerName="pbu_housingEntities"
EnableFlattening="false"
EntitySetName="Building"
EntityTypeFilter="Building" />
<asp:DropDownList
ID="ddlBuilding"
runat="server"
DataSourceID="EditHousingDataSource"
DataTextField="building_name"
DataValueField="ID" />
</EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Container中不存在在页面标记中指定的EntitySet"Building".
有什么想法吗?pbu_housingEntities中肯定有一个Building实体?
我愿意将实体框架集成为我的数据层.
我使用本教程跟踪文章并生成了poco实体:http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx
我有自己的业务对象.这是我的业务对象Brach:
public class Branch
{
public long BranchId { get; private set; }
public string BranchName { get; set; }
public string BranchCode { get; set; }
public Branch() { }
public void InsertBranch(Guid companyId)
{
using (var ctx = new Entities.Entities())
{
var branch = new T_STF_BRANCH() //This is generated POCO object
{
company_id = companyId,
branch_name = BranchName,
branch_code = BranchCode
};
ctx.T_STF_BRANCH.AddObject(branch);
ctx.SaveChanges();
}
}
public static IList<Branch> GetBranchesList(Guid companyId, long? branchId, …Run Code Online (Sandbox Code Playgroud) .net entity-framework business-objects poco entity-framework-4
一个类是否可以从Entity Framework类继承并仍然使用继承的类映射保留回DB?当我尝试和SaveChanges声明Type没有任何映射时,我收到了试图从"自我跟踪实体"类派生的错误.我希望,因为Type是从Entity类继承的,它也可以以某种方式继承实体映射以使其工作.有没有人能够让这个工作?
我试图支持的场景是在另一个引用包含实体和映射的程序集的程序集中扩展Entity对象.部分类和映射将编译到包含Entity对象的程序集中.所以我不能通过使用部分类来实现这一点.
mapping inheritance entity-framework-4 self-tracking-entities
我正在尝试使用基于参数化输入的SQL数据源填充数据表.棘手的是,参数化输入的值仅在后面的代码中可用,所以我被迫在页面代码中编写SQL数据源
我该怎么做(我使用的是C#和ASP.Net 4.0)
asp.net页面中创建sql数据源连接的当前代码是:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:LicensingConnectionString %>"
SelectCommand="SELECT * FROM [commissions] where username=@username "></asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
我希望在@username中使用的值在此代码后面的代码中检索
IPrincipal p = HttpContext.Current.User;
// p.Identity.Name : this is what we will use to call the stored procedure to get the data and populate it
string username = p.Identity.Name;
Run Code Online (Sandbox Code Playgroud)
谢谢 !
我在SQL Server中创建了下表
CREATE TABLE [dbo].[Role](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](20) NOT NULL,
[CreatedDate] [datetime] NULL,
[TIMESTAMP] [timestamp] NOT NULL,
[ModifiedDate] [datetime] NULL,
CONSTRAINT [PK_TBL_ROLES] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY].
Run Code Online (Sandbox Code Playgroud)
使用EF,我创建了一个带有byte []类型的timestamp列的ste类,它是readonly.
我使用datacontext从我的数据库中检索一个对象,例如
var roleObject = roleService.getObject(id);
Run Code Online (Sandbox Code Playgroud)
现在我按如下方式更改角色名称
roleObject.Name = "New Name";
roleObject.ModifiedDate = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
最后,我使用以下泛型方法调用我的存储库来持久保存对象
public void PersistUpdatedItem(T entity){
_ctx.ApplyCurrentValues(typeof (T).Name, entity);
_ctx.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
_ctx.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
注意 …
我正在使用Entity Framework 4.1 Code First和ASP.NET MVC 3.
我有一个服务类,在这个类中我调用我的存储库方法.
我添加了一个新的教程对象,我只是不知道如何更新记录.这是我对服务的插入和更新方法:
public class TutorialService : ITutorialService
{
private ITutorialRepository tutorialRepository;
public TutorialService(ITutorialRepository tutorialRepository)
{
this.tutorialRepository = tutorialRepository;
}
public void Insert(Tutorial tutorial)
{
tutorialRepository.Add(tutorial);
tutorialRepository.Save();
}
public void Update(Tutorial tutorial)
{
// Not sure what the code looks like here to call the repo methods
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库类:
public class TutorialRepository : ITutorialRepository
{
PbeContext db = new PbeContext();
public void Add(Tutorial tutorial)
{
db.Tutorials.Add(tutorial);
}
public void Save()
{
db.SaveChanges();
} …Run Code Online (Sandbox Code Playgroud) entity-framework entity-framework-4 entity-framework-4.1 asp.net-mvc-3
我有这样的架构
包 - >列表 - >用户
所有'一对多'都在线下......
所以我想运行一个查询,我获得userID在用户中匹配的所有包.
var pck = (from pk in context.Package
where pk.Lists[here's my problem]
Run Code Online (Sandbox Code Playgroud)
我假设这里的导航属性是:pk.Lists. *Users.UserId* == MyUserId但是我没有在列表级别看到导航属性.
我还没有得到像这样更复杂的EF查询.我环顾网络但没找到任何东西让它点击.我转向你堆叠.有人帮我看光!
编辑:再次感谢堆栈,我会尽我所能支付它!而且,所有这些答案都让我对ef4的力量有了启发!