我有一个被安排到层次结构中的类,例如:
class TestContainer
{
... bla bla bla...
public Virtual Item Items {get;set;}
}
Class Item
{
[Key]
public int ID {get;set;}
public string PropA {get;set;}
public string PropB {get;set;}
[InverseProperty("Parent")]
public virtual ICollection<Item> Children { get; set; }
[InverseProperty("Contents")]
public virtual Item Parent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以,我有一个更新方法,允许用户上传更新的子集.
我一开始并没有意识到但删除我的容器TestContainer并没有删除这些项目.
好的,没问题吧?
我插入了以下功能(这可能非常难看,但我仍处于原型设计阶段)
private void DeleteItems(TestContainer existingContainer)
{
//setup a flat list for deletion
List<Item> trashCan = new List<Item>();
//delete the old CI's from the database
BuildDeletionList(existingContainer.Items, ref trashCan);
foreach …Run Code Online (Sandbox Code Playgroud) 我使用visual studio,postgresql数据库和ado.net实体数据模型.在连接字符串中,我无法设置MultipleActiveResultSets=True.
通常当我连接到sql server时MultipleActiveResultSets=True,它工作正常.但我不能设置与postgresql数据库相同.
当我使用它时,我得到以下错误
已经有一个与此命令关联的打开DataReader,必须先关闭它.
我该如何解决这个问题.
有增量问题.我创建了一个新对象并尝试将其设置到我的数据库中我收到了数据违规错误.表中的索引没有增加(Id = 0).Id - 在SQL表中设置为主键,StoredGeneratedPattern在EDM中设置字段"Id" 的属性设置为"Identity",因此,显然,它必须自动递增.
public void AddPhone(UserPhone phone)
{
context.AddToUserPhone(phone);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.
我已经阅读了很多关于存储库模式的文章,并提出了一些问题.我正在尝试在ASP.NET 4.0应用程序中实现它.该体系结构是一个分层体系结构,具有表示层,业务层和数据层.来自这篇文章,http://www.primaryobjects.com/CMS/Article108.aspx
我创建了MYSQLRepository(DataLayer)
public class MySQLRepository:IOrderRepository
{
public List<Order> GetOrders()
{
List<Order> orders = new List<Order>();
orders.Add(new Order(1,"A"));
orders.Add(new Order(2,"B"));
return orders;
}
}
Run Code Online (Sandbox Code Playgroud)
我的业务层看起来像这样
public class OrderBL
{
IOrderRepository orderrep;
public OrderBL(IOrderRepository repository)
{
orderrep = repository;
}
public List<Order> GetOrders()
{
return orderrep.GetOrders();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,在表示层,我希望这样做
protected void Page_Load(object sender, EventArgs e)
{
OrderBL orderBL = new OrderBL(new MySQLRepository());
List<Order> orders = orderBL.GetOrders();
foreach (Order order in orders)
{
Response.Write(order.OrderId.ToString() + ". " + order.OrderNo …Run Code Online (Sandbox Code Playgroud) 如何在asp.net MVC 3中实现基于角色的自定义用户身份验证.考虑我有两个表UserInfo(UserId, UserName, Password,RoleId)和Role(RoleId, RoleName).
我想从数据库(UserInfo表)验证用户,并且还想从该表中检索角色.并希望使用喜欢
[Authorize(Roles="Admin")]
需要你的帮助和想法....
我在visual studio中使用ASP.NET和MVC 3,并且有一个关于将对象从一个操作方法(被调用Search)传递到另一个(被调用SearchResult)的问题.我尝试使用ViewData,但它没有坚持到ViewResult的视图.下面是我的代码片段,来自单个控制器.从表单收集数据并调用submit(因此[HttpPost]声明)时,将调用"Search" :
[HttpPost]
public ActionResult Search(Search_q Q){
// do some work here, come up with an object of type 'Search_a'
// called 'search_answer'.
ViewData["search_answer"] = search_answer;
return RedirectToAction("SearchResults");
}
public ActionResult SearchResult(Search_a answer)
{
return View(answer);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试使用RedirectToAction("SearchResults", new {answer = search_answer});而不是上面调用RedirectToAction但我的'search_answer'仍然没有坚持到View.将此Search_a对象发送到SearchResultView 的最佳方法是什么?
有没有办法控制桥实体创建的表的名称?现在,如果我运行这个:
public class Foo
{
public Int32 FooId { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public Int32 BarId { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
得到的桥表名为BarFoo,任何使它成为FooBar的方法?
我正在使用EntityFramework v4.3.1并通过继承DbContext并覆盖OnModelCreating()来通过代码构建我的模型.我有一个名为Companies的表和一个名为Messages的表.该消息表有一个空的外键Messages.CompanyId.设置此选项后,特定邮件将与特定公司相关联.当此字段为空时,消息将与所有公司相关联.
我的问题是我不知道如何在OnModelCreating()方法中表达这种行为.如果我做:
modelBuilder.Entity<Message>().HasRequired(o => o.Company).WithMany(o => o.Messages).Map(o => o.MapKey("CompanyId"));
Run Code Online (Sandbox Code Playgroud)
我成功获得公司的导航属性,以便我可以执行TestCompany.Messages之类的调用,并获得与特定公司关联的消息列表.但我还需要返回所有空消息.
怎么能实现这一目标?
我有一个包含一个数据列表的表单,该数据列表绑定到一个数据源,该数据源包含一个项目列表和一个真/假标志.如果为true,则选中myCheck复选框:
<form id="myForm" runat="server">
<asp:Button ID="save" runat="server" Text="Save" OnClick="save_Click" />
<br />
<asp:DataList runat="server" id="myList" onitemdatabound="myList_ItemDataBound">
<HeaderTemplate>
<th>Item Name</th>
<th id="thCheck" runat="server">Check?</th>
</HeaderTemplate>
<ItemTemplate>
<td id="tdName" runat="server"><%# Eval("Name") %></td>
<td runat="server"><asp:CheckBox id="myCheck" runat="server" Checked="false" /></td>
</ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)
单击"保存"时,我想查看已检查的项目.我使用以下内容迭代datalist中的项目:
protected void save_Click(Object sender, EventArgs e)
{
String Name;
Boolean omit;
foreach (DataListItem item in myList.Items)
{
CheckBox omitCheck = (CheckBox)item.FindControl("myCheck");
if (omitCheck != null)
{
if (omitCheck.Checked == true) // This line is my problem!!
{
// do stuff
}
break; …Run Code Online (Sandbox Code Playgroud) void excelsave()
{
try
{
ApplicationClass app = new ApplicationClass(); // the Excel application.
Workbook book = null;
Worksheet sheet = null;
Range range = null;
// the range object is used to hold the data
app.Visible = false;
app.ScreenUpdating = false;
app.DisplayAlerts = false;
string execPath =
Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
book = app.Workbooks.Open(@"E:\SSIS\ABC\Book1.xls",
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value);
sheet = (Worksheet)book.Worksheets[1];
range = sheet.get_Range("A1", Missing.Value);
range.Columns.ColumnWidth = 22.34;
range = sheet.get_Range("B1", Missing.Value); …Run Code Online (Sandbox Code Playgroud)