小编Chr*_*ris的帖子

System.IO.File.Create锁定文件

我正在使用System.IO.File.Create来创建一个文件.我不是用流编写器写它,只是创建它.

当应用程序尝试打开新创建的文件时,前端出现服务器错误 - 该文件正在使用中.然后垃圾收集似乎出现,几分钟后一切都还可以.

现在我知道如果我使用Streamwriter,我将不得不关闭它.这同样适用于创作吗?

我已经读过打开一个流编写器到文件然后立即关闭它将解决这个问题,但它似乎很乱.有更简单的方法吗?

c# asp.net

52
推荐指数
4
解决办法
5万
查看次数

LINQ .SUM()和可空的db值

我知道为什么会这样,但是有人能指出我正确的语法方向吗?

目前我有:

var expense = from e in db.I_ITEM
              where e.ExpenseId == expenseId
              select e;

return expense.Sum(x => x.Mileage ?? 0);
Run Code Online (Sandbox Code Playgroud)

我的问题是x.Mileage的类型是"double?" 并且在db中具有空值.

我得到的错误是:

Exception Details: System.InvalidOperationException: The cast to value type 'Double' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

c# linq

11
推荐指数
2
解决办法
2万
查看次数

使用SpreadSheetGear获取数据行数?

我查了几个在线资源,也许我是盲目的,但我还是找不到答案.

我正在上传一个文件,将其转换为流,然后将其提供给SpreadSheetGear.现在,我需要遍历每一行并读取数据(这很好).到目前为止,这是我的代码:

IWorkbook wb = Factory.GetWorkbookSet().Workbooks.OpenFromStream(file.InputStream);
IWorksheet ws = wb.ActiveWorksheet;
IRange cells = ws.Cells;

for (int i = 2; i <= cells.RowCount; i++)
{
    //Code for every row
    for (int x = 1; x <= cells.ColumnCount; x++)
    {
         //Code for every column
    }
}
Run Code Online (Sandbox Code Playgroud)

这是问题:cells.RowCount等于1048576,这显然是行数的Excel上限.是否调用SpreadSheetGear返回包含数据的行数?我不能使用固定金额,因为提供的电子表格可能有500到2,000行.

我知道SpreadSheetGear可能不是那么广泛使用,但我认为无论如何我都有机会在这里.

干杯!

编辑:

在有人说使用while循环之前,行可能是空的,因此检查空字符串有点乱.

c# asp.net spreadsheetgear

9
推荐指数
1
解决办法
5745
查看次数

在.NET MVC应用程序中"深入"角色的距离是多少?

我编写了一些复杂的MVC应用程序,这些应用程序都是基于角色的,并使用.NET Membership.在我的第一个项目中,我使用了与此类似的结构的角色:

  • 管理员
  • 经理
  • 赞同者

我很快发现它的可扩展性不高,例如客户会说"我希望特定用户x具有所有管理员权限但不能删除".然后,我必须在该控制器中为该用户设置一个hack.

因此,我的第二个实现导致了这个角色结构:

  • CanCreate
  • CanDelete
  • CanEditAll
  • CanEditOwn

这种方法导致了几十个角色,这些角色基于他们是否可以全局编辑特定项目或只是他们自己的等等.它还会导致更多的控制器操作和更多的代码 - 尽管这可能只是复杂应用程序中的情况!

我的问题是,我是否以正确的方式接近这一点,并且是否有任何良好的在线资源以"正确"的方式处理具有大量角色的复杂应用程序.我这样做了吗?

asp.net-mvc asp.net-membership roles

5
推荐指数
1
解决办法
344
查看次数

如何在模型重建后保留自定义导航属性?

我有几个从"用户"表到"报告"表的导航属性.生成的导航属性显然是这样访问的:

USER.REPORTs.Where(x => ...)
USER.REPORTs2.Where(x => ...)
USER.REPORTs3.Where(x => ...)
Run Code Online (Sandbox Code Playgroud)

第一个是用户createdId,第二个是UserApprovedId等......基本的东西.

这些很难解释.如果不访问EDMX并检查导航属性,很难分辨您正在导航的属性.

现在我知道我可以在属性管理器中创建自己的End1/End2导航属性,但是如果重新创建模型,这些属性就会丢失.

有没有解决的办法?

c# entity-framework edmx

4
推荐指数
1
解决办法
1679
查看次数

使用Excel生成SQL - 问题处理日期字段

我有一个excel文件,其中包含我的客户想要放入数据库的数据.我在数据的左边生成了一个看起来像这样的列(显然改变了这里的字段名称):

="INSERT INTO TBL_CUSTOMER
                      (FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, CUSTOMER_DATE_REGISTERED)
VALUES     ('"&D2&"','"&E2&"','"&F2&"','"&G2&"','"&H2&"','"&I2&"','"&J2&"','"&K2&"','"&L2&"','"&M2&"','"&N2&"','"&O2&"','"&P2&"','"&Q2&"','"&R2&"','"&S2&"','"&T2&"','"&U2&"','"&V2&"','"&W2&"','"&X2&"','"&Y2&"','"&Z2&"','"&AA2&"','"&AB2&"','"&AC2&"')"
Run Code Online (Sandbox Code Playgroud)

一切都很完美,但问题是最后一项(Cell AC2)是格式为25/12/2010 08:45:45的日期.Excel正在阅读这个文章40537.3651041667.

知道怎么让它看起来正确吗?

希望你们能帮忙!

编辑:Nomatted我为AC2设置单元格格式我仍然得到拉入查询的随机数

sql excel

3
推荐指数
1
解决办法
2万
查看次数

阻止对返回部分视图的控制器的直接URL访问?

如果有一个名为UsersController的控制器,其操作如下:

public ActionResult ActiveUsers()
{
   IQueryable<TBL_USERS> recentUsers = repo.GetRecentUsers();
   Return PartialView(recentUsers);
}
Run Code Online (Sandbox Code Playgroud)

这是通过Html.RenderAction()整个ap 调用的.

如果用户直接在地址栏中导航到Users/ActiveUsers,则部分视图将在浏览器中呈现.

有可能阻止这个吗?

asp.net-mvc

3
推荐指数
1
解决办法
2230
查看次数

如何在RedirectToAction中处理MVC String数组?

如果我有以下内容:

        [HttpPost]
        public ActionResult DeclineClaims(String button, String[] Decline)
        {
            if (button == "claim")
            {
                return RedirectToAction("NewExpense", "Claim", new { Create = Decline });
            }

            ....
            ....
        }
Run Code Online (Sandbox Code Playgroud)

并通过RedirectToAction在此处接收:

        public ActionResult NewExpense(String[] Create)
        {
            ...
        }
Run Code Online (Sandbox Code Playgroud)

第二个动作中的"创建"是一个空字符串.标准Int和字符串不会发生此问题.

我该如何处理String数组?

asp.net-mvc

1
推荐指数
1
解决办法
2982
查看次数