Tag: C#的

entity framework(EF)代码第一级联删除的一对零或一的关系

继Julie Lerman的Pluralsight“Entity Framework 5入门”课程的“代码优先build模”部分之后,我创build了两个具有一对一或一对一关系的POCO类:一个父代(User)和一个可选孩子(UserDetail)。 用户和UserDetail数据模型图(点击查看)。 请注意,图中的UserId属性是UserDetail的主键和外键 。 相关代码: public class User { //… [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } /* Has a 1:0..1 relationship with UserDetail */ public virtual UserDetail UserDetail { get; set; } //… } public class UserDetail { //… /* Has a 0..1:1 relationship with User */ public virtual […]

什么是std :: string :: c_str()生命周期?

在我的一个程序中,我必须与一些与const char*一起工作的遗留代码进行交互。 比方说,我有一个像这样的结构: struct Foo { const char* server; const char* name; }; 我的高级应用程序只处理std::string ,所以我想用std::string::c_str()来取回const char*指针。 但是c_str()的生命周期是多less? 我可以做这样的事情,而不面临未定义的行为? { std::string server = "my_server"; std::string name = "my_name"; Foo foo; foo.server = server.c_str(); foo.name = name.c_str(); // We use foo use_foo(foo); // Foo is about to be destroyed, before name and server } 或者我应该立即复制c_str()的结果到另一个地方? 谢谢。

正则expression式来检测分号结尾的C ++ for&while循环

在我的Python应用程序中,我需要编写一个正则expression式,它与用分号( ; )终止的C ++ for或while循环匹配。 例如,它应该匹配这个: for (int i = 0; i < 10; i++); …但不是这样: for (int i = 0; i < 10; i++) 乍看起来,这看起来微不足道,直到您意识到开始和结束括号之间的文本可能包含其他括号,例如: for (int i = funcA(); i < funcB(); i++); 我正在使用python.re模块。 现在我的正则expression式看起来像这样(我留下了我的意见,所以你可以更容易理解): # match any line that begins with a "for" or "while" statement: ^\s*(for|while)\s* \( # match the initial […]

void main和int main之间的区别?

我声明C ++程序的方式是否重要?

ncurses是否可用于Windows?

在Windows的C / C ++中是否有任何ncurses库在本地可resize的Win32窗口中( 不在控制台模式下)模拟ncurses?

StaTaskScheduler和STA线程消息抽取

TL; DR: 由StaTaskScheduler运行的任务内的死锁。 长版本: 我使用Parallel Team的ParallelExtensionsExtras中的StaTaskScheduler来托pipe由第三方提供的一些传统的STA COM对象。 StaTaskScheduler实现细节的描述如下: 好消息是TPL的实现能够在MTA或者STA线程上运行,并且考虑到WaitHandle.WaitAll(当方法提供了多个等待句柄时只支持MTA线程)等底层API的相关差异。 我认为这意味着TPL的阻塞部分将使用一个等待API的消息,如CoWaitForMultipleHandles ,以避免在STA线程上调用死锁情况。 在我的情况下,我相信以下情况正在发生:进程内的STA COM对象A调用了对象之外的对象B,然后期望从B通过作为传出呼叫的一部分的callback。 简化forms: var result = await Task.Factory.StartNew(() => { // in-proc object A var a = new A(); // out-of-proc object B var b = new B(); // A calls B and B calls back A during the Method call return a.Method(b); }, […]

为什么在malloc中使用sizeof(*指针)更安全

特定 struct node { int a; struct node * next; }; 为了build立一个新的结构, struct node *p = malloc(sizeof(*p)); 比…更安全 struct node *p = malloc(sizeof(struct node)); 为什么? 我以为他们是一样的。

如何正确地退出一个C#应用程序?

我有一个在C#中发布的应用程序。 这里的问题是每当我通过点击红色退出buttonclosures主窗体,它closures窗体,但它不closures应用程序。 当我尝试closures计算机时发现了这一点,希望我所做的应用程序能够顺畅地运行,然后我被许多子窗口轰炸,我已经把它放在MessageBox Alerts中。 我尝试了Application.Exit,但它仍然调用所有的子窗口和警报,我不知道如何使用Environment.Exit和哪个整数放入它。 顺便说一句,每当我的窗体调用formclosed或窗体closures事件,我用一个this.Hide()函数closures应用程序。 这会影响我的应用程序现在的行为吗?

为什么C#构造函数不能推断types?

为什么types推断不像构造函数那样支持generics方法? public class MyType<T> { private readonly T field; public MyType(T value) { field = value; } } var obj = new MyType(42); // why can't type inference work out that I want a MyType<int>? 虽然你可以用工厂类来解决这个问题, public class MyTypeFactory { public static MyType<T> Create<T>(T value) { return new MyType<T>(value); } } var myObj = MyTypeFactory.Create(42); […]

我如何使用entity framework自动过滤软删除的实体?

我首先使用实体​​框架代码。 我重写DbContext SaveChanges以允许我执行“软删除”: if (item.State == EntityState.Deleted && typeof(ISoftDelete).IsAssignableFrom(type)) { item.State = EntityState.Modified; item.Entity.GetType().GetMethod("Delete") .Invoke(item.Entity, null); continue; } 这很好,所以对象知道如何标记自己是一个软删除(在这种情况下,它只是将IsDeleted设置为true )。 我的问题是我怎么能这样做,当我检索对象忽略IsDeleted任何? 所以,如果我说_db.Users.FirstOrDefault(UserId == id)如果该用户有IsDeleted == true它将忽略它。 本质上我想过滤? 注意:我不想只把&& IsDeleted == true这就是为什么我用接口标记类,所以删除知道如何“只是工作”,我想以某种方式修改检索知道如何“只是工作“也基于那个接口存在。