小编Eri*_*rer的帖子

实体框架强制分布式事务

我无法获得以下代码,只使用单个上下文触及单个数据库而不升级到MSDTC,并且在context.SaveChanges()上抛出异常:

public void DeleteGroupDetails(int groupId)
{
    // Note there is no ambient tx
    var thisIsNull = Transaction.Current;

    using (var scope = new TransactionScope())
    {
        var thisIsNotNull = Transaction.Current;

        using (var context = new MyDbEntities())
        {
            var deleted = context.tblGroups.Where(x => x.GroupID == groupId);

            context.tblGroups.RemoveRange(deleted);

            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        //scope.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

例外情况是"基础提供程序在打开时失败." - 合作伙伴事务管理器已禁用其对远程/网络事务的支持.(HRESULT异常:0x8004D025)

注意:

  • 这是使用EF 6和SQL Server 2005
  • 由于数据库服务器被锁定,我无法使用MSDTC
  • 我想在POC中使用TransactionScope,因为它将在WCF中运行,它内置了TransactionScope,我不想在事务管理中丢弃我的代码.
  • 类似的项目使用NHibernate并没有这个问题

连接字符串是:

connectionString ="metadata = res:// /ResourceAccess.MyDb.csdl|res:// /ResourceAccess.MyDb.ssdl|res://*/ResourceAccess.MyDb.msl;provider=System.Data.SqlClient;provider连接字符串="data source = wil-gvpsqldev01; initial …

c# msdtc entity-framework transactionscope

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

TabControl.ItemTemplate不能完全填充标签页眉背景

我正在尝试设置选项卡标题的背景颜色,但它没有填充整个标题,而是在模板周围留有空白。我需要用背景色完全填充选项卡的标题。

以下是一些简单的代码来演示此行为:

<Window x:Class="WpfApplication7.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">
    <Grid>
        <TabControl Name="TabControl">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <Grid Background="BlueViolet">
                        <TextBlock Height="20" Width="60" Text="TEST"/>
                    </Grid>
                </DataTemplate>
            </TabControl.ItemTemplate>
        </TabControl>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

后面的代码:

using System.Windows;
using System.Windows.Controls;

namespace WpfApplication7
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            TabControl.Items.Add(new Grid());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf

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

无限循环的数据结构

我正在寻找一个可以填充项目的数据结构,就像IEnumerator调用MoveNext()一样,但是当它到达列表的末尾时会自动循环回到开头.我可以想到两种方法来做到这一点,要么使用链接列表并将其链接到自身,要么只是编写逻辑来检查IEnumerator.Current是否为空并重置,两者都相当简单,但我想先检查是否存在在框架中已经可以做到这一点.

它看起来像这样:

public interface IInfiniteEnumerable<T>
{
    bool MoveNext();

    T Current();
}
Run Code Online (Sandbox Code Playgroud)

编辑:根据答案,这可以解决问题:

class Program
{
    static void Main(string[] args)
    {
        var lst = new List<string>
        {
            "A",
            "B",
            "C"
        };

        IEnumerator<string> enumerator = lst.RepeatIndefinitely().GetEnumerator();

        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);
        enumerator.MoveNext();
        Console.WriteLine(enumerator.Current);

        Console.ReadLine();
    }
}

public static class Extensions
{
    public static IEnumerable<T> RepeatIndefinitely<T>(this IEnumerable<T> source)
    {
        while (true)
        {
            foreach (var item in source)
            {
                yield return item; …
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×3

entity-framework ×1

msdtc ×1

transactionscope ×1

wpf ×1