小编epa*_*alm的帖子

EF迁移应该去哪里,我的类库项目还是我的ASP.NET项目?

我的方案包含:

  • FooBarAsp,一个asp项目(为应用程序提供UI)
  • FooBar,一个类库(应用程序)
  • FooBar.Tests,一个测试项目(测试应用程序)

FooBar使用EF 6 Code First,并包含许多模型和a DataContext.FooBarAsp使用Microsoft的Identity框架进行用户身份验证,并且有一个ApplicationDbContext.两种情境都很好,并按预期工作.Global.asax.cs应该执行MigrateDatabaseToLatestVersion(对吧?).FooBar.Tests应该执行DropCreateDatabaseAlways并且不关心迁移(对吗?).

我应该在FooBarAsp或FooBar中启用Flash吗?对于这两种情况?

在FooBar中运行EnableMigrations后(仅用于踢),我的__MigrationHistory表包含两个InitialCreate行,一个用ContextKey = FooBar.Models.DataContext,另一个用ContextKey = FooBarAsp.Models.ApplicationDbContext.所以他们都被跟踪了?如果是这样,(因为我没有启用自动迁移),我需要明确的运行 MigrateDatabaseToLatestVersion<DataContext>MigrateDatabaseToLatestVersion<ApplicationDbContext>在Global.asax.cs中?


编辑

为什么我不想ApplicationUser进入FooBar并合并ApplicationDbContextDataContext

ApplicationUserASP附带的库存是一个单独的实体(并且是分开的ApplicationDbContext,恰好指向同一个数据库).ASP ApplicationUser和身份框架负责身份验证,注册,电子邮件验证,登录,注销,密码,密码强度,密码重置,双因素身份验证,Cookie,会话,来自facebook/google等来源的外部登录.FooBar不会知道或关心任何这些.FooBar User有一个UserName,ASP ApplicationUser有一个UserName.当用户登录时,我只是User通过UserName 查找Foobar ,并且登录的是谁.所以当我创建一个新的Blog(其中Blog是FooBar实体)时,作者是FooBar User(不是ApplicationUser).最终结果是FooBar不是Web/Desktop/Console/iPhone/Android应用程序.它是一个库,任何这些东西都可以引用,交互并提供用户界面.关键是FooBar没有受到任何这些用户界面的污染或偏见.

所以我不想ApplicationUser进入FooBar,因为它来自Microsoft.AspNet.Identity命名空间,而FooBar不知道或不关心ASP.NET(或WPF或其他任何接口).

c# asp.net entity-framework ef-migrations

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

在DLL中将DLL作为嵌入式资源包含在WPF项目中

我正在关注http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

我已将WPFToolkit.Extended.dll添加到我的解决方案中,并将其Build Action设置为Embedded Resource.

在App.OnStartup(StartupEventArgs e)中,我有以下代码:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    String resourceName = "AssemblyLoadingAndReflection." + new AssemblyName(args.Name).Name + ".dll";
    String assemblyName = Assembly.GetExecutingAssembly().FullName;
    Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
    using (stream)
    {
        Byte[] assemblyData = new Byte[stream.Length];
        stream.Read(assemblyData, 0, assemblyData.Length);
        return Assembly.Load(assemblyData);
    }
};
Run Code Online (Sandbox Code Playgroud)

调试器会两次触发此代码块.

第一次:

resourceName is "AssemblyLoadingAndReflection.StatusUtil.resources.dll"
assemblyName is "StatusUtil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
stream is null
Run Code Online (Sandbox Code Playgroud)

第二次:

resourceName is "AssemblyLoadingAndReflection.WPFToolkit.Extended.resources.dll"
assemblyName is "StatusUtil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
stream is null
Run Code Online (Sandbox Code Playgroud)

代码在遇到stream.Length时抛出异常,因为它为null.

我不能使用ILMerge,因为它是一个WPF项目.

c# embed wpf dll include

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

在WPF中将自定义纸张尺寸打印到冲击打印机

我打印到装有8.5 x 8.5英寸纸张的冲击式打印机上.打印时,打印机弹出11英寸而不是8.5英寸.

PageMediaSize pageSize = new PageMediaSize(PageMediaSizeName.Unknown, element.Width, element.Height);

PrintDialog dialog = new PrintDialog();
dialog.PrintTicket.PageMediaSize = pageSize;
Console.WriteLine(dialog.PrintableAreaHeight); // 816, good!
dialog.PrintQueue = myQueue;                   // selected from a combobox
Console.WriteLine(dialog.PrintableAreaHeight); // 1056 :(

dialog.PrintVisual(element, description);
Run Code Online (Sandbox Code Playgroud)

使用" 如何在.NET中将Twips转换为像素? "我已经确定8.5英寸是816像素,这是我element.Width和我的大小element.Height.我正在设置一个新的PageMediaSize,但这似乎没有任何效果,dialog.PrintableAreaHeight当我在对话框上设置队列时仍然在1056结束.

如果是这样dialog.ShowDialog(),请手动选择我的打印机,并在我的打印机的高级设置中手动查找和更改纸张尺寸,然后dialog.PrintableAreaHeight正确反映更改.

此页面http://go4answers.webhost4life.com/Example/set-printdialogs-default-page-size-168976.aspx建议我只能设置PageMediaSize我的打印机支持.使用GetPrintCapabilities我的功能PrintQueue,我看到一个包含10个左右页面大小的列表,其中没有一个是8.5 x 8.5.这与我在Windows中进入打印机高级设置时看到的列表相同.

c# printing wpf dot-matrix

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

如何防止以C#代码包装在WPF FlowDocument中?

研究表明这是防止换行的一种方式,例如:

<Paragraph>
    <TextBlock TextWrapping="NoWrap">unwrapping text</TextBlock>
</Paragraph>
Run Code Online (Sandbox Code Playgroud)

如何获得C#代码中的行为?

new Paragraph(new TextBlock()
{
    Text = "unwrapping text",
    TextWrapping = TextWrapping.NoWrap
});
Run Code Online (Sandbox Code Playgroud)

cannot convert from 'System.Windows.Controls.TextBlock' to 'System.Windows.Documents.Inline'之所以会产生收益,是因为Paragraph的构造函数期望使用Inline。

我似乎找不到一种将TextBlock转换为Inline以使Paragraph满意的方法。如果它在XAML中有效,那么应该在某处有一个转换器,对吗?我如何找到它?

我意识到FlowDocument的目的是要包装,流动和调整大小等。我正在写一些简单的报告,只是一些System.Windows.Documents.Table数据,不幸的是,包装的第一列是包含日期的,所以

2013-04-24
Run Code Online (Sandbox Code Playgroud)

成为

2013-04-
24
Run Code Online (Sandbox Code Playgroud)

Run到目前为止,我一直在使用s,尽管它们具有一些TextBlock属性,但它们不提供TextWrapping或提供任何东西TextTrimming

c# wpf word-wrap flowdocument

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

如何在Swift中检测并应用横向方向到AVCaptureVideoPreviewLayer?

我基本上是在回答这个问题AVCaptureVideoPreviewLayer方向 -除了在Swift中需要景观.

我的目标是iOS 8,而AVCaptureVideoPreviewLayer似乎没有setVideoOrientation功能.

我应该如何检测方向已更改,并正确旋转AVCaptureVideoPreviewLayer?

landscape orientation swift ios8

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

在 Apps 脚本中导入日历事件时如何调试 BadRequest 错误?

我使用了https://developers.google.com/apps-script/samples/automations/vacation-calendar上的“填充团队假期日历”示例来构建一个 Apps 脚本,以将所有外出事件拉入共享日历。该脚本几个月来一直运行良好。如果不对脚本进行任何更改,现在调用时Calendar.Events.import(event, TEAM_CALENDAR_ID);出现错误:

GoogleJsonResponseException:对 calendar.events.import 的 API 调用失败并出现错误:错误请求

我已经在调试器中运行了该脚本,并且该错误并没有提供任何有关错误实际内容的信息,除了 400 错误请求之外。还有很多与日期/时间格式相关的其他问答,但event我导入的变量来自之前的调用,Calendar.Events.list(...)因此它已经是 api 本身生成的 JS 事件对象。

这是一个最小的可重现示例:

let TEAM_CALENDAR_ID = '<calendar id goes here>';

function testImport() {
  const now = new Date();
  let user = Session.getActiveUser();
  
  // Fetch next 10 events
  let events = Calendar.Events.list(user.getEmail(), {
    timeMin: now.toISOString(),
    singleEvents: true,
    orderBy: 'startTime',
    maxResults: 10
  });

  if (events.items.length === 0) {
    console.error('No events found');
    return;
  }

  // Use next upcoming event for this user …
Run Code Online (Sandbox Code Playgroud)

google-calendar-api bad-request google-apps-script http-status-code-400

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

为什么 DRF 的序列化器不验证 PositiveSmallIntegerField?

使用 Django 1.11 和 Django Rest Framework 3.7,我有一个 Person 模型

class Person(models.Model):

    name = models.CharField(max_length=100)
    email = models.EmailField()
    age = models.PositiveSmallIntegerField()
Run Code Online (Sandbox Code Playgroud)

使用 PersonSerializer

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ('id', 'name', 'age', 'email')
Run Code Online (Sandbox Code Playgroud)

和一个 ListCreate 视图

class PersonList(generics.ListCreateAPIView):
    queryset = Person.objects.all()
    serializer_class = PersonSerializer
Run Code Online (Sandbox Code Playgroud)

使用 HTTPie,我可以创建一个像这样的 Person:

$ http POST http://127.0.0.1:8000/api/people/ name=Alice age=26 email=alice@example.com
HTTP/1.0 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 60
Content-Type: application/json
Date: Sun, 10 Dec 2017 15:00:28 GMT
Server: WSGIServer/0.1 Python/2.7.11
Vary: …
Run Code Online (Sandbox Code Playgroud)

python django validation django-rest-framework

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

在save()中读取外键引用会引发RelatedObjectDoesNotExist

我想这是设计的,但这是我的场景:如果保存一个没有父母的孩子,我想创建一个新的父母.

class Parent(models.Model):
    pass

class Child(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.PROTECT, related_name='children')

    def save(self, *args, **kwargs):
        if self.parent is None: # error happens here
            self.parent = Parent.objects.create()
        super().save(*args, **kwargs)

c = Child()
c.save()
# django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist: Child has no parent.
Run Code Online (Sandbox Code Playgroud)

我在执行时得到了上面的RelatedObjectDoesNotExist if self.parent is None.我也试过if not self.parent,在同一行上同样的错误.我真的不想让父字段可以为空.只是读取self.parent的行为,甚至检查它是否为None,足以触发错误.

这是在Django 1.11,这里出现错误:https://github.com/django/django/blob/2b882a4bd954c8a6b1447f8fc0841a3352514c26/django/db/models/fields/related_descriptors.py#L193,所以如果我正在读这个对,只是通过阅读self.parent,我结束了__get__.

如果我不能检查它是否为"我怎么能"给它一个值,如果它是无"?

python django django-models

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

为什么CollectionViewSource.GetDefaultView(...)从Task线程中返回错误的CurrentItem?

我认为这是一个相当标准的设置,有一个ListBox支持ObservableCollection.

我有一些工作要处理可能需要花费大量时间(超过几百毫秒)的Things,ObservableCollection所以我想将其卸载到Task(我本来也可以使用BackgroundWorker)以免冻结用户界面.

什么奇怪的是,当我CollectionViewSource.GetDefaultView(vm.Things).CurrentItem开始之前Task,一切正常,但是如果发生这种情况Task那么CurrentItem似乎总是指向的第一个元素ObservableCollection.

我已经制定了一个完整的工作示例.

XAML:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <ToolBar DockPanel.Dock="Top">
            <Button Content="Click Me Sync" Click="ButtonSync_Click" />
            <Button Content="Click Me Async Good" Click="ButtonAsyncGood_Click" />
            <Button Content="Click Me Async Bad" Click="ButtonAsyncBad_Click" />
        </ToolBar>
        <TextBlock DockPanel.Dock="Bottom" Text="{Binding Path=SelectedThing.Name}" />
        <ListBox Name="listBox1" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=Things}" SelectedItem="{Binding Path=SelectedThing}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Name}" />
                </DataTemplate>
            </ListBox.ItemTemplate> …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading task

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

如何在GroupItem中显示自定义文本?

带Expander的典型ListView GroupStyle看起来大致如下:

<ListView.GroupStyle>
    <GroupStyle>
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander>
                                <Expander.Header>
                                    <TextBlock Text="{Binding Path=Name}" />
                                </Expander.Header>
                                <Expander.Content>
                                    <ItemsPresenter />
                                </Expander.Content>
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</ListView.GroupStyle>
Run Code Online (Sandbox Code Playgroud)

TextBlock绑定到Name,它似乎生成GroupItem对象的值,该对象的propertyName被传递到PropertyGroupDescription,后者被添加到ListCollectionView的GroupDescriptions集合(whew):

class MyClass
{
    public int Id { get; set; }
    public int FullName { get; set; }
    public string GroupName { get; set; } // used to group MyClass objects
}

MyView.GroupDescriptions.Add(new PropertyGroupDescription("GroupName"));
Run Code Online (Sandbox Code Playgroud)

如何让ListView的组标题显示GroupName以外的属性?我要说的是GroupName对于将我的对象拆分成组是有用的,但不一定是我希望用于所述组的标题的名称.

c# wpf xaml grouping

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

CloudBlob子类之间有什么区别?

看起来CloudBlob具有3个子类,您可以使用这些子类来将数据存储到Azure存储中或从中存储。这是(非常稀疏的)文档:

  • Microsoft.WindowsAzure.Storage.Blob。CloudBlockBlob
    • 表示作为一组块上传的Blob。

  • Microsoft.WindowsAzure.Storage.Blob。CloudAppendBlob
    • 表示一个附加Blob,这是一种Blob,其中数据块始终被提交到Blob的末尾。

  • Microsoft.WindowsAzure.Storage.Blob。CloudPageBlob
    • 代表Microsoft Azure页面Blob。

我一直在CloudBlockBlob上传/下载pdf和图像,并且似乎一切正常。我似乎找不到解释这些类的功能的页面。

在什么情况下我应该使用CloudAppendBlobCloudPageBlob

.net c# azure azure-storage-blobs

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