嗨,我试图与实体框架一起使用交易.由于在线提供了大量有关实施交易的不同方式的信息,我必须说我在正确的方式上有点困惑.我有一个带有两个表Employee和Company的示例数据库.Employee表有一个引用公司Id的外键.考虑到我想要实现一个事务,我将一条记录插入到Company表中,然后一条记录到Employee表,我想这样做,这样只有两个记录都成功时才插入记录我有以下代码.
public void addCompanyToDatabase()
{
using (var context = new myTestEntities())
{
context.Connection.Open(); //added this as was getting the underlying
//provider failed to open
using (TransactionScope scope = new TransactionScope())
{
try
{
Company c = new Company();
c.Name = "xyz";
context.Companies.AddObject(c);
context.SaveChanges();
//int a = 0;
//int b = 5 / a;
Employee e = new Employee();
e.Age = 15;
e.Name = "James";
e.CompanyId = c.Id;
context.Employees.AddObject(e);
context.SaveChanges();
scope.Complete();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred");
}
}
} …Run Code Online (Sandbox Code Playgroud) 我现在正在尝试找出为我的ASP.NET MVC 3应用程序散列密码的最佳方法.根据我的意见,最好使用给定的密码和随机盐,然后将散列密码和盐存储在一起.我的问题是不会使随机盐毫无意义吗?我的意思是散列密码的原因是因为如果有人进入你的数据库,他们没有普通的密码和盐使得反转哈希更难以获得密码但是如果我存储散列与密码,盐的重点是什么(我对哈希的知识是有限的所以我可以完全脱离我的想法).
我的第二个问题是什么散列方法是最好用的?我读到MD5(这是我一直使用的)很容易破解.我听说bcrypt/sha512非常好.应该使用哪一个?我知道C#默认带有sha512哈希.从我所看到的,bcrypt不包含在.NET库中,有没有适合C#和bcrypt的好库?
我想向有经验的ASP.NET开发人员询问如何攀登ASP.NET的学习曲线.
我是一位经验丰富的C++和C#开发人员,没有Web应用程序经验.
我发现ASP.NET MVC和ASP.NET是两种不同的技术.我只想问:
非常感谢
有没有人使用MVC 3 WebGrid助手实现内联编辑?我已经对这个主题进行了很多搜索,但是没有找到很多建议.此外,我不能使用其他第三方或开源网格.
提前致谢!
我有一个DLL,它提供ASP.MVC应用程序的入口点.我们称之为Primary.DLL.在Primary.DLL中,有LINQ-to-SQL数据上下文和其他定义的类.在某处Application_Start(), Assembly.Load()调用加载Secondary.DLL.辅助节点未在Primary.DLL的项目文件中引用.但是在Secondary.DLL的项目文件中引用了Primary,因为LINQ-to-SQL数据上下文和上面提到的其他类在Secondary中使用.
这会产生循环依赖问题吗?这种设计会有问题吗?
我有这个型号和配置
public class Person
{
public int? FatherId { get; set; }
public virtual Person Father { get; set; }
public int? MotherId { get; set; }
public virtual Person Mother { get; set; }
public virtual List<Person> Childs { get; set; }
}
class PersonConfiguration : EntityTypeConfiguration<Person>
{
public PersonConfiguration()
{
HasOptional(e => e.Father).WithMany(e => e.Childs)
.HasForeignKey(e => e.FatherId);
HasOptional(e => e.Mother).WithMany(e => e.Childs)
.HasForeignKey(e => e.MotherId);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这个类型是初始的错误.
指定的架构无效.错误:(151,6):错误0040:在名称空间ExamModel(Alias = Self)中未定义类型Person_Father.
有没有办法Childs通过两个属性(motherId和fatherId)映射属性?
我们正在考虑从定制代码切换到ORM,以简化代码库并转向可能更强大的代码.目前,我们有一些"系统"表和可变数量的"自定义"表.这些自定义表对于每个安装都是不同的:客户可能有关于发票的表,另一个可能有关于保险单的表,等等.可以随时添加这些自定义表,并且应该立即可供用户使用.我们在DBO模式之后编写了一堆java类:每个系统表的一个类,以及一个自定义表的泛型类.而且,我们有一个通用的java对象来实例化自定义记录; 这个类有通用的方法Object getProperty(String name).
我们看了几个ORM,但我们找不到任何可以简化这种自定义表的使用.
有没有类似经历的人?谢谢.
修改现有代码时使用了哪些特殊技术?
例如:假设您修改方法中的业务规则.您是否使用特殊注释标记修改后的部分?
您在修改代码时使用的任何编码/注释标准?
我不明白为什么代码在调用savechanges之前首先不向集合中添加新项.我从NuGet(4.1.10331.0)安装了EF4.1.我创建了以下示例:
public class TinyItem
{
public int Id { get; set; }
public string Name { get; set; }
}
public class TinyContext : DbContext
{
public virtual DbSet<TinyItem> Items { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var ctx1 = new TinyContext())
{
ListItems(ctx1, "Start");
ctx1.Items.Add(new TinyItem { Name = "Test1" });
ListItems(ctx1, "After add");
ctx1.SaveChanges();
ListItems(ctx1, "After commit");
}
Console.ReadKey();
}
public static void ListItems(TinyContext ctx, string label="")
{
Console.WriteLine("=========================================");
Console.WriteLine(label);
Console.WriteLine(string.Format("Items.Local: …Run Code Online (Sandbox Code Playgroud) 我有一个被安排到层次结构中的类,例如:
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) c# ×6
.net ×2
asp.net ×1
asp.net-mvc ×1
commenting ×1
hash ×1
java ×1
maintenance ×1
orm ×1
passwords ×1
transactions ×1
webgrid ×1