小编Ste*_*ash的帖子

内存流不可扩展

我正在尝试阅读电子邮件附件,并且我收到"内存流无法展开"错误.我研究了一些,大多数解决方案似乎与动态确定缓冲区的大小有关,但我已经这样做了.我对内存流不是很熟悉,所以我想知道为什么这是一个问题.谢谢.

foreach (MailMessage m in messages)
{
   byte[] myBuffer = null;
   if (m.Attachments.Count > 0)
   {
      //myBuffer = new byte[25 * 1024];  old way 
      myBuffer = new byte[m.Attachments[0].ContentStream.Length];
      int read;
      while ((read = m.Attachments[0].ContentStream.Read(myBuffer, 0, myBuffer.Length)) > 0)
      {
          // error occurs on executing next statement
          m.Attachments[0].ContentStream.Write(myBuffer, 0, read);
      }

      ... more unrelated code ...
Run Code Online (Sandbox Code Playgroud)

c# email stream

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

对每个表行使用控制器进行ng-repeat:如何访问x-editable表单元素?

我设置的场景非常类似于x-editable演示站点中的Editable Row示例.在这种情况下,有一个简单的表,其中三列用于数据,第四列用于编辑和删除按钮.表格外的第三个按钮会在表格中添加一行.当表单可编辑时,数据列将变为可编辑(x-editable库的主要功能).对于此演示,第一列成为简单的文本编辑,后两列成为下拉列表.

通过在行模板上使用ng-repeat来创建表.我需要做一些不同的事情,都涉及访问ng-repeat创建的范围.我需要

  • 检测行何时可编辑以及何时不可编辑
  • 当第一个下拉列表更改时,筛选第二个下拉列表的选项

为了尝试使用这个演示,我为各行添加了一个控制器.这让我可以访问表单(name = rowform),但我仍然无法在"make"属性上设置监视.当用户做出选择时,我甚至无法找到表单的哪些属性正在发生变化.

如何在'make'属性上设置手表?

页面控制器

    angular.module('app').controller("quoteBuckingRaterController",
    function ($scope, $q, $filter, listService, transactionDataService) {

        $scope.equipment = []; 
        $scope.makes = []; 
        $scope.models = [];

        $scope.showModel = function(equip) {
            if(equip.model) {
                var selected = $filter('filter')($scope.models, {id: equip.model});
                return selected.length ? selected[0].name : 'Not set';
            } else {
                return 'Not set';
            }
        };

        $scope.showMake = function(equip) {
            if (equip.model) {
                var selected = $filter('filter')($scope.models, { id: equip.model });
                if (selected.length && selected.length > 0) {
                    if (equip.make != selected[0].make) …
Run Code Online (Sandbox Code Playgroud)

angularjs x-editable

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

自创建数据库以来,支持'DataContext'上下文的模型已更改

我正在尝试使用Code First和Migrations.即使我的模型目前没有变化,我也会遇到异常.当我添加一个迁移时,up和down都是空的,但是我收到一条运行时错误消息,如下所示:

EntityFramework.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:自创建数据库以来,支持"MyDataContext"上下文的模型已更改.考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/

我的架构如下:

  • DataAccess项目,包括上下文,流体配置和迁移代码
  • 包含poco类的模型项目
  • Web API和MVC项目,每个项目都包含各自web.config文件中的连接字符串.

另外,我有以下代码:

DbInitializer

public static MyDataContext Create()
{
   Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataAccess.MyDataContext, MyDataAccess.Migrations.Configuration>());
   return new MyDataContext(ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString, null);
}
Run Code Online (Sandbox Code Playgroud)

我开始使用AutomaticMigrationsEnabled = false; 在迁移配置构造函数中,因为我理解这将允许(并要求)我对应用迁移的时间有更多的控制权.我也尝试将其设置为true但结果相同.

我在收到此错误时添加了一个新的迁移,并且Up方法为空.我将数据库更新为这个新的迁移,并在_migrationHistory表中创建了一条记录,但是当我尝试运行该应用程序时仍然收到错误.此外,种子数据未添加到数据库中.

protected override void Seed(MyDataAccess.MyDataContext context)
{
            IdentityResult ir;

            var appDbContext = new ApplicationDbContext();
            var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(appDbContext));
            ir = roleManager.Create(new IdentityRole("Admin"));
            ir = roleManager.Create(new IdentityRole("Active"));
            ir = roleManager.Create(new IdentityRole("InActive"));

            var userNamager = new UserManager<User>(new UserStore<User>(appDbContext));

            //  assign default admin
            var admin = new User { UserName = …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first ef-migrations

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

如何查询联结表

使用Entity Framework/LINQ,我需要以下帮助.

该数据库有一个People表,其标识列为PersonId.还有一个Skills表,其标识列为SkillId.这两个通过第三个表PeopleSkills连接,PeopleSkills有自己的标识列PeopleSkillsId,引用PersonId的外部列和引用SkillId的外部列.

我尝试编写的方法是传递一个List类型的参数,它包含我们正在寻找的任何技能.该方法应返回链接到输入参数列表中所有技能的List.如何在没有技能列表中的所有技能的情况下构建排除任何人的列表?

我遇到的问题是我的SQL经验非常少.我确实有很多其他编程经验,但SQL对我来说总是有点粗糙.我想过使用Join,但这不会起作用.即如果我的人具有技能A和B,并且搜索列表具有B&C的元素,则联接将在B上匹配它们并返回该人.我需要将这个人排除在外,因为他没有B&C.

我还想过迭代技能列表并构建一个过滤器,但这看起来很难看.这似乎是一个LINQ构建来处理的问题,使用List来查询另一个List,并且应该有一个优雅的解决方案.

.net linq entity-framework junction-table

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

从DataAccess层访问ASP.NET标识数据

我有一个使用MVC-WebApi,Owin,ASP.NET Identity和EntityFramework的n层解决方案.我使用示例Identity代码作为启动程序,并向ApplicationUser添加了一些自定义属性.我还配置了所有类来使用Guids for Identity值.到目前为止一切都很好.

当我想将示例代码中的IdentityConfig和IdentityModel文件从MVC项目移出到DataAccess项目时,我开始遇到困难.这些文件定义了几个关键类,如ApplicationUserManager,ApplicationRoleManager等.在ApplicationDbInitializer中,有一些代码可以使用当前的HttpContext获取ApplicationUserManager和ApplicationRoleManager,以便为数据库设定种子.似乎没有必要要求HttpContext为数据库设定种子.此外,还有其他后台进程,我将很快添加,需要从业务层访问身份数据,而不需要HttpContext相关,所以我想现在删除该依赖项.

我看到关于这一问题的Q&A ASP身份-访问的HttpContext上的参考库,但最好的答案是相当薄.我试过更换

var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
Run Code Online (Sandbox Code Playgroud)

var userManager = new ApplicationUserManager(new ApplicationUserStore(db));
var roleManager = new ApplicationRoleManager(new RoleStore<IdentityRole, Guid, IdentityUserRole>(db)); 
Run Code Online (Sandbox Code Playgroud)

但这真的导致了一个兔子洞.除非我定义了每个Identity类的自定义实现并为它们实现了接口等,否则代码将无法编译.它需要以下所有内容(可能更多,我没有完成它)

  • ApplicationUserRole:IdentityUserRole
  • ApplicationRole:IdentityRole,IRole
  • ApplicationUserClaim:IdentityUserClaim
  • ApplicationUserLogin:IdentityUserLogin

和IRole需要完全实现,我不知道该怎么做.

我在这一点上停了下来,因为感觉应该有一个更简单的方法或一些我可以看到的示例代码.我真的不需要在ApplicationUser之外定制任何东西.我是走在正确的道路上还是我的直觉,还有更好的方法吗?

asp.net asp.net-identity

7
推荐指数
0
解决办法
528
查看次数

这个C#构造的作用是什么?为什么?MyClass <TMyClass>:MyClass在哪里

我遇到了以下代码,都在一个文件/类中.我遗漏了细节,它是我感兴趣的构造.为什么同一个类有两个不同的声明,它们有什么不同?第二个声明的语法的目的是什么?

public abstract class MyClass
{
    ...
}

public abstract class MyClass<TMyClass> : MyClass
    where TMyClass: MyClass<TMyClass>
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance

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

ORM或数据库,其作用类似于版本控制并跟踪历史记录

这只是我想知道的一个随意的想法.是否存在本机支持跟踪历史记录的ORM或数据库?我想象的是每一行都有一个带有Id和版本的复合主键.更新将"附加"具有相同Id和下一个可用版本号的新行.普通选择仅返回唯一标识行的最新版本,但"SelectHistory"将返回所有行.删除本身就是一个软删除.

鉴于这不是一个新问题,并且在太阳下没有什么新东西,它让我觉得很有可能某人已经设计了一个优雅的解决方案来抽象出这部分的难点,并且它可以在数据库层或ORM层.

我有一个基于Entity Framework的现有应用程序.它会覆盖DbContext的SaveChanges方法,以便为每个新的/更改的实体设置CreatedBy/CreatedDate/ModifiedBy/ModifiedDate属性.客户最近询问了添加完整历史记录跟踪需要做多少工作.根据过去类似系统的经验,我给了他们一个合理的估计.我的估计涉及向模型和业务层逻辑添加其他实体以填充这些实体.客户决定不去做这项工作,但它让我想知道是否有更好的方法.实体框架是否有更好的解决方案?与其他架构有更好的解决方案吗?

database orm entity-framework

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

获取隐藏字段的值

我有一个包含三个隐藏字段的ASP.NET页面.(如果我能让它发挥作用,就会有人做.只是表明我已经尝试了几件事.)

<input type="hidden" id="hiddenSkillId1" runat="server" />
<input type="hidden" id="hiddenSkillId2" />
<asp:HiddenField ID="hiddenSkillId3" runat="server"/>    
Run Code Online (Sandbox Code Playgroud)

我还有一个AJAXControlToolKit.AutoCompleteExtender.OnClientItemSelected事件调用的JavaScript函数:

<script type="text/javascript">
function SkillPartialMatchSelected(source, eventArgs ) {
    document.getElementById("ctl00_Content_hiddenSkillId1").Value = eventArgs.get_value();
    document.getElementById("hiddenSkillId2").Value = eventArgs.get_value();
    document.getElementById("ctl00_Content_hiddenSkillId3").Value = eventArgs.get_value();
}
</script>
Run Code Online (Sandbox Code Playgroud)

使用断点并检查值,我已确认在客户端设置了值.

最后,对于连接到LinkBut​​ton OnClick事件的页面,我有C#代码.

protected void AddSkillToProspect(object sender, EventArgs e)
{
   string selectedKey1 = Request.Form[hiddenSkillId1.ClientID];
   string selectedKey2 = Request.Form["hiddenSkillId2"];
   string selectedKey3 = Request.Form[hiddenSkillId3.ClientID];
   string selectedItem = SkillNameBox.Text.Trim();   
   ...
}
Run Code Online (Sandbox Code Playgroud)

所有三个selectedKey值都为null,但ASP.NET Text Edit中的selectedItem值具有值.

从我所读到的,其中一个应该工作.我错过了什么吗?我该怎么做才能将客户端的JavaScript函数的值返回到服务器端?

asp.net hidden-field

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

EF6 Code First:使用Fluent API声明外键

我正在与EF 6和Code First合作开发一个与保险行业相关的应用程序.对于此应用程序,每个帐户可以有多个策略,每个策略可以有多个事务.此外,每个帐户必须与身份(姓名,地址,城市等)有关系.该策略还与Identity有关系,但它是可选的.

由于帐户 - >身份和帐户 - >>策略 - >身份,我发现我需要使用Fluent API将WillCascadeDelete设置为至少其中一个路径的False.

我的问题是如何将Account.IdentityId和Policy.InsuredIdentityId属性配置为外键?我避免将任何导航/外键字段添加到标识类中,因为永远不应该有理由从标识导航到另一个类.这就是为什么我很难搞清楚这一点的原因?

public class Account
{
    public long Id { get; set; }
    public long IdentityId { get; set; }
    public virtual Identity Identity { get; set; }

    public ICollection<Policy> Policies { get; set; }
}

public class Policy
{
    public long Id { get; set; }

    public long AccountId { get; set; }
    public virtual Account Account { get; set; }

    public bool UseAccountIdentity { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

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