Connect with us

Künstliche Intelligenz

.NET 10 Release Candidate 1: Nachschlag für Entity Framework Core


Nach Microsofts Plan sollte .NET 10.0 zum Ende der Preview-Phase vor dem frisch erschienenen Release Candidate 1 eigentlich „Feature Complete“ sein und die beiden Release-Candidate-Versionen sollten nur der Qualitätsverbesserung dienen. Das trifft laut Ankündigung auf Laufzeitumgebung, SDK, Sprachcompiler (C#, F#, Visual Basic .NET) und WPF auch zu. Wie schon in der Vergangenheit gibt es aber auch Teile von .NET, die noch signifikante neue Funktionen in Release Candidate 1 nachliefern. Dieses Mal betrifft es insbesondere Entity Framework Core und ASP.NET Core sowie MAUI.

.NET 10.0 Release Candidate 1 steht auf der .NET-Downloadseite bereit. Wie bei früheren Versionen besitzt der Release Candidate 1 eine Go-Live-Lizenz: Entwicklerinnen und Entwickler können die Version produktiv einsetzen und erhalten offiziellen Support von Microsoft. Gleichwohl müssen sie noch mit Änderungen rechnen bis zum Erscheinungstermin, der für den 11. November 2025 angekündigt ist.


Downloadseite

Downloadseite

.NET 10.0 Release Candidate 1 hat das Go-Live-Label.

Von Visual Studio 2022 gab es parallel ein Bugfixing-Update von Version 17.14.13 auf 17.14.14. Das Kompilieren einer .NET 10.0-Anwendung gelingt aber nur, wenn man 17.14.14 Preview 1.0 oder die erste Vorschauversion von Visual Studio 2026 (alias „18.0.0 Insiders“) verwendet. Die 2026er Version bietet neben noch mehr KI-Integration auch ein neues Look and Feel im Fluent Design mit zahlreichen neuen Themes wie Icy Mint, Cool Breeze, Mango Paradise und Spicy Red.


Screenshot Visual Studio

Screenshot Visual Studio

Zwischen den Themes in Visual Studio 2026 kann man schnell im Menü Tools/Theme umschalten.

Zudem soll Visual Studio 2026 laut einem Blogbeitrag von Microsoft schneller sein. Bei der Installation fällt ein Detail positiv auf: Visual Studio 2026 fragt, ob man eine Konfiguration (Workloads, individuelle Komponenten, Erweiterungen und Einstellungen) aus einer auf dem Rechner vorhandenen Visual-Studio-2022-Installation oder einer .vsconfig-Datei übernehmen möchte (siehe die folgende Abbildung). Schon Visual Studio 2022 konnte bei der Installation .vsconfig-Dateien verwenden, aber nur beim Starten der IDE-Installation per Kommandozeile (Parameter --config).

Visual Studio 2026 bietet – im Gegensatz zu den beiden 2022er Versionen – auch die Installation des .NET-10.0-SDK als „Individual Component“ an. In den älteren Versionen muss man das .NET-SDK manuell von der Downloadseite installieren.


Übernahme bestehender Konfigurationen

Übernahme bestehender Konfigurationen

Visual Studio 2026 bietet bei der Installation die Übernahme bestehender Konfigurationen an.

Entity Framework Core unterstützt ab Release Candidate 1 die beiden neuen Spaltentypen JSON und VECTOR, die es in Microsoft SQL Server 2025 (derzeit in der Preview-Phase und der Cloudvariante SQL Azure gibt. JSON hat Entity Framework Core auch bisher schon verwendet, um beispielsweise eine Liste primitiver Datentypen wie List auf eine einzige Tabellenspalte abzubilden – außer bei PostgreSQL, das nativ solche Mengen beherrscht – oder beim Speichern sogenannter Owned Types. Bisher kam dazu aber in der Datenbanktabelle der Spaltentyp nvarchar(max) in Verbindung mit der SQL-Funktion OPENJSON() zum Einsatz.

Nun verwendet Entity Framework Core hier den neuen nativen Spaltentyp JSON, sofern eine SQL-Server-Version angesprochen wird, die ihn beherrscht. Zudem muss man Entity Framework Core mitteilen, dass das Zielsystem JSON-Spalten kennt. Das geschieht durch Aufruf von UseSqlAzure() statt UseSqlServer() beim Zugriff auf eine Cloud-Datenbank. Beim lokalen Microsoft SQL Server muss man den Kompatibilitätslevel auf 170 setzen:

builder.UseSqlServer(connstring, x => x.UseCompatibilityLevel(170));

Neu in Entity Framework Core 10.0 Release Candidate 1 ist, dass Complex Types auch ein JSON-Mapping anbieten. Complex Types hat Microsoft in Entity Framework Core 8.0 als bessere Alternative zu Owned Types eingeführt und in Version 9.0 erweitert, aber in Complex Types wurde bisher kein JSON-Mapping angeboten, sondern sie wurden auf Spalten in der zum übergeordneten Objekttyp gehörenden Tabelle abgebildet. Daher waren sie bisher nur für 1:1-Beziehungen, nicht aber für 1:N-Beziehungen möglich. Das ändert sich in Entity Framework Core-Version 10.0: Hier ist der Aufruf ToJson() bei komplexen Typen im 1:1- und 1:N-Mapping möglich:


modelBuilder.Entity(x =>
{
  x.ComplexProperty(p => p.Address, p=>p.ToJson()); // 1:1-Mapping. NEU: p=>p.ToJson()                                                          
  x.ComplexProperty(p => p.ManagementSet, p => p.ToJson()); // NEU: 1:N mit p=>p.ToJson()
}


Laut den Release Notes kommt es dabei in Release Candidate 1 aber noch zu Problemen und man soll mit dem Praxiseinsatz auf Release Candidate 2 warten. Im Schnelltest zeigte sich, dass beim JSON-Mapping der komplexen Typen unter anderem das Gruppieren mit GroupBy() und die komplette Aktualisierung des komplexen Typen mit ExecuteUpdate() in Release Candidate 1 zu Laufzeitfehlern führen.

Als zweiten neuen SQL Server-Datentyp können Entwicklerinnen und Entwickler ab Release Candidate 1 Microsoft.Data.SqlTypes.SqlVector aus dem NuGet-Paket „Microsoft.Data.SqlClient“ (ab Version 6.1) beim objektrelationalen Mapping mit Entity Framework Core 10.0 verwenden. Ebenso gibt es eine neue EF-Core-Methode EF.Functions.VectorDistance() für die SQL-Funktion VECTOR_DISTANCE(). Bisher existierte für beides ein eigenständiges NuGet-Paket EFCore.SqlServer.VectorSearch. Allerdings kann man in Entity Framework Core 10.0 in LINQ-Abfragen noch nicht die SQL Server-Funktion VECTOR_SEARCH() nutzen.

Die Dokumentation enthält ein Codebeispiel für Vektordaten:


public class Blog
{
    // ...

    [Column(TypeName = "vector(1536)")]
    public SqlVector Embedding { get; set; }
}

…

IEmbeddingGenerator> embeddingGenerator = /* Set up your preferred embedding generator */;

var embedding = await embeddingGenerator.GenerateVectorAsync("Some text to be vectorized");
context.Blogs.Add(new Blog
{
    Name = "Some blog",
    Embedding = new SqlVector(embedding)
});
await context.SaveChangesAsync();

…

var sqlVector = new SqlVector(await embeddingGenerator.GenerateVectorAsync("Some user query to be vectorized"));
var topSimilarBlogs = context.Blogs
    .OrderBy(b => EF.Functions.VectorDistance("cosine", b.Embedding, sqlVector))
    .Take(3)
    .ToListAsync();


Bei einem Thema probiert Entity Framework Core seit Jahren verschiedene Strategien: die Übergabe von Parametermengen von .NET an das Datenbankmanagementsystem, beispielsweise um passende Datensätze zu einer Liste von Orten zu suchen:


List destinations = new List { "Berlin", "New York", "Paris" };
var flights = ctx.Flights
    .Where(f => destinations.Contains(f.Destination))
    .Take(5).ToList();

Entity Framework Core-Versionen 1.0 bis 7.0 haben die Werte aus der Menge [code]destinations[/code] einzeln als statische Werte übergeben:
SELECT TOP(@p) [f].[FlightNo], [f].[Airline], [f].[Departure], [f].[Destination], [f].[FlightDate], [f].[FreeSeats], [f].[Memo], [f].[NonSmokingFlight], [f].[Pilot_PersonID], [f].[Seats], [f].[Timestamp]
FROM [Operation].[Flight] AS [f]
WHERE [f].[NonSmokingFlight] = CAST(1 AS bit) AND [f].[FlightDate] > GETDATE() AND [f].[FreeSeats] > CAST(0 AS smallint) AND [f].[Destination] IN (N'Berlin', N'New York', N'Paris')


Das sorgte jedoch im Datenbankmanagementsystem für viele verschiedene Ausführungspläne.

Seit Version 8.0 übergibt Entity Framework Core die Liste als ein JSON-Array, das im SQL-Befehl mit OPENJSON() aufgeteilt wird:


SELECT TOP(@p) [f].[FlightNo], [f].[Airline], [f].[Departure], [f].[Destination], [f].[FlightDate], [f].[FreeSeats], [f].[Memo], [f].[NonSmokingFlight], [f].[Pilot_PersonID], [f].[Seats], [f].[Timestamp]
FROM [Operation].[Flight] AS [f]
WHERE [f].[NonSmokingFlight] = CAST(1 AS bit) AND [f].[FlightDate] > GETDATE() AND [f].[FreeSeats] > CAST(0 AS smallint) AND [f].[Destination] IN (
    SELECT [d].[value]
    FROM OPENJSON(@destinations) WITH ([value] nvarchar(30) '$') AS [d]
)


Das erschwerte dem Datenbankmanagementsystem die Optimierung der Ausführungspläne, da es die Zahl der Parameter nicht mehr kannte.

Seit Version 9.0 ist es möglich, über die Funktion EF.Constant() oder den globalen Aufruf TranslateParameterizedCollectionsToConstants() in der Kontextklasse in OnConfiguring() zum alten Verhalten zurückzukehren:


var flights1 = ctx.Flights
    .Where(f => EF.Constant(destinations).Contains(f.Destination))
    .Take(5).ToList();


Beim geänderten Standard konnten Entwicklerinnen und Entwickler im Einzelfall mit EF.Parameter() anschließend das JSON-Array übergeben.

Nun in Entity Framework Core 10.0 hat Microsoft abermals einen neuen Standard implementiert, nämlich die einzelne Übergabe der Werte als eigene Parameter:


SELECT TOP(@p) [f].[FlightNo], [f].[Airline], [f].[Departure], [f].[Destination], [f].[FlightDate], [f].[FreeSeats], [f].[Memo], [f].[NonSmokingFlight], [f].[Pilot_PersonID], [f].[Seats], [f].[Timestamp]
FROM [Operation].[Flight] AS [f]
WHERE [f].[NonSmokingFlight] = CAST(1 AS bit) AND [f].[FlightDate] > GETDATE() AND [f].[FreeSeats] > CAST(0 AS smallint) AND [f].[Destination] IN (@destinations1, @destinations2, @destinations3)


Das geschieht im obigen Beispiel mit drei Werten. Entity Framework Core arbeitet aber auch noch bei 1000 Werten auf diese Weise, wie ein Schnelltest zeigte.

Man kann das alte Verhalten mit EF.Constant() und EF.Parameter() erzwingen, da die optimale Strategie auch davon abhängt, wie stark die Zahl der Werte zur Laufzeit variiert. Die globale Änderung des Standards erfolgt mit

UseParameterizedCollectionMode(ParameterTranslationMode.Constant). Erlaubt sind die Werte: Constant, Parameter und MultipleParameters. Die erst in Version 9.0 eingeführte Methode TranslateParameterizedCollectionsToConstants() existiert noch, aber sie ist als [Obsolete] markiert.

ASP.NET Core führt in Release Candidate 1 neue Metriken für ASP.NET Core Identity zum Überwachen der Benutzerverwaltung ein, beispielsweise aspnetcore.identity.user.create.duration, aspnetcore.identity.sign_in.sign_ins und aspnetcore.identity.sign_in.two_factor_clients_forgotten.

Der Persistent Component State in Blazor soll nun auch beim Einsatz der Enhanced Navigation beim statischen Server-Side-Rendering funktionieren

Um Instanzen von Klassen und Records in Blazor zu validieren, die Microsoft schon in der Preview-Phase von .NET 10.0 verbessert hatte, gibt es drei weitere Neuerungen:

  • Validierungsannotationen können auch für Typen und nicht nur wie bisher für Properties definiert werden.
  • Die neue Annotation [SkipValidation] schließt Typen und Properties von der Validierung aus.
  • Ebenso werden alle mit [JsonIgnore] annotierten Properties nicht mehr validiert.

Zudem gibt es nochmals einige kleinere Verbesserungen für die OpenAPI-Schema-Generierung, wie in den Release Notes beschrieben ist.

Auch bei .NET MAUI gibt es neue Metriken für die Überwachung der Layout-Performance:

  • layout.measure_count,
  • layout.measure_duration,
  • layout.arrange_count und
  • layout.arrange_duration.

Das Steuerelement bietet neuerdings die Events WebViewInitializing() und WebViewInitialized(), um die Initialisierung anzupassen. Vergleichbare Ereignisse gab es zuvor im Steuerelement (BlazorWebViewInitializing() und BlazorWebViewInitialized()). Das Steuerelement besitzt nun die Eigenschaft IsRefreshEnabled zusätzlich zu IsEnabled.

Das Windows-Forms-Teams schreibt in den Release Notes, dass der in .NET 9.0 eingeführte Dark Mode nicht mehr als experimentell gekennzeichnet ist. Gleichzeitig heißt es dort aber auch, dass die Arbeit am Dark Mode weitergehen wird.


Galerie Dark Mode

Galerie Dark Mode

Die Galerie zeigt einige Windows-Forms-Steuerelemente im Dark Mode.

Vor der für November angekündigten Veröffentlichung von .NET 10.0 ist noch ein weiterer Release Candidate im Oktober geplant. Als Erscheinungstermin für die stabile Version hat Microsoft den 11. November 2025 verkündet. iX, dpunkt.verlag und www.IT-Visions.de präsentieren .NET 10.0 am 18. November im eintägigen Online-Event betterCode() .NET.


(rme)



Source link

Künstliche Intelligenz

Mercedes-Benz: Gewinn sackt um rund 50 Prozent ab


Der Gewinn von Mercedes-Benz ist in den ersten neun Monaten um die Hälfte zurückgegangen. Das Konzernergebnis sackte im Vergleich zum Vorjahreszeitraum um 50,3 Prozent von 7,80 Milliarden Euro auf 3,87 Milliarden Euro ab, wie der Konzern mitteilte. Als Gründe dafür wurden unter anderem Zölle, geringere Absatzzahlen und Aufwendungen für Effizienzmaßnahmen angegeben.

Weiterlesen nach der Anzeige

Vorstandschef Ola Källenius sagte, die Quartalsergebnisse stünden im Einklang mit der Prognose für das Gesamtjahr. Das Konzernergebnis gab im dritten Quartal im Vergleich zum Vorjahreszeitraum um fast 31 Prozent von 1,71 Milliarden Euro auf 1,19 Milliarden Euro nach. Der Umsatz sank um 6,9 Prozent auf 32,14 Milliarden Euro.

Um die Profitabilität wieder zu steigern, hatte der Vorstand im Februar ein Sparprogramm angekündigt: Die Produktionskosten sollen bis 2027 um zehn Prozent sinken, ebenso die Fixkosten. Auch die Materialkosten sollen gesenkt werden. Mit dem Gesamtbetriebsrat vereinbarte Mercedes ein Paket mit Abfindungsprogramm für Beschäftigte in indirekten Bereichen. Laut dem Management hat das Sparprogramm einen Umfang von rund 5 Milliarden Euro im Vergleich zu früheren internen Planungen.

Das bereinigte Ergebnis vor Zinsen und Steuern (Ebit) des Konzerns betrug im dritten Quartal 2 Milliarden Euro nach 2,5 Milliarden Euro im Vorjahreszeitraum. Das Konzern-Ebit sei um Sondereffekte in Höhe von insgesamt 1,34 Milliarden Euro bereinigt worden, teilte der Hersteller weiter mit. 876 Millionen Euro davon entfalle auf den Personalabbau in Deutschland sowie auf Sparbemühungen im Ausland. Wie viele Menschen in Deutschland das Unternehmen verließen, wurde nicht mitgeteilt.

Schwache Geschäfte in China und den USA hatten Mercedes-Benz erneut ein Absatzminus eingebracht. Von Juli bis September wurden 525.300 Pkw und Vans abgesetzt. Das sind zwölf Prozent weniger als im Vorjahreszeitraum. In den ersten neun Monaten des Jahres steht bei Mercedes für Pkw und Vans nun insgesamt ein Minus von neun Prozent auf rund 1,6 Millionen Fahrzeuge in den Büchern. Bereits 2024 war der Absatz der Schwaben angesichts der Krise in der Autoindustrie um vier Prozent auf knapp 2,4 Millionen gesunken.

Weiterlesen nach der Anzeige

Mehr zur Marke Mercedes-Benz


(mfz)



Source link

Weiterlesen

Künstliche Intelligenz

OpenAI schließt Umbau zu Gewinnorientierung ab, Microsoft-Aktie macht Sprung


OpenAI hat die Umstrukturierung in ein gewinnorientiertes Unternehmen abgeschlossen, wird aber weiterhin von einer Non-Profit-Organisation kontrolliert. Das teilte die KI-Firma jetzt mit, kurz nachdem die Details der neuen Partnerschaftsregeln mit Microsoft publik gemacht wurden. Mit dem Schritt endet ein monatelanger Prozess, den unter anderem der US-Milliardär Elon Musk torpediert hatte. Der Aktienkurs von Microsoft macht daraufhin einen Sprung, wodurch die Marktkapitalisierung des Softwarekonzerns erstmals die Marke von vier Billionen US-Dollar übertreffen konnte. Das hat vorher nur Nvidia geschafft, der Halbleiterfertiger kratzt dank des KI-Booms aber bereits an der Marke von fünf Billionen US-Dollar.

Weiterlesen nach der Anzeige

Die für OpenAI verantwortliche Non-Profit-Organisation heißt jetzt OpenAI Foundation und hält einen Anteil von 26 Prozent, einen Prozentpunkt weniger als Microsoft. Ihren Einfluss erhält sie aus zusätzlichen Stimmrechten, erklärt OpenAI und ergänzt, dass sie mit den Mitteln aus der milliardenschweren Beteiligung zu einer der am besten ausgestatteten philanthropischen Organisationen der Welt werde. Anfangs soll sie sich Versuchen widmen, die Gesundheitsvorsorge mit medizinischen Durchbrüchen zu verbessern und technische Widerstandsfähigkeit gegen KI-Systeme zu stärken. Bei OpenAI soll sie dafür sorgen, dass die angestrebte Allgemeine Künstliche Intelligenz (AGI) dem Wohle der Menschheit dient. 47 Prozent an der OpenAI Group halten Angestellte und Investoren.

OpenAI-Chef Sam Altman hat den Umbau von dem Non-Profit-Modell hin zu dem eines gewinnorientierten Unternehmens seit Monaten vorangetrieben. Das sollte es den Investoren, die bereits dutzende Milliarden in die KI-Firma gesteckt haben, ermöglichen, auf lange Sicht auch Geld herauszubekommen. Das war bei dem alten Modell nur eingeschränkt möglich. Dass die grundlegende Struktur mit einer einflussreichen Non-Profit-Organisation trotzdem nicht angetastet werden sollte, war schon länger klar. Darauf hatten die Generalstaatsanwälte von Kalifornien und Delaware gedrängt. Elon Musk hatte versucht, den Prozess komplett zu verhindern und dafür unter anderem ein Übernahmeangebot gemacht. Er hat mit xAI eine eigene KI-Firma.


(mho)



Source link

Weiterlesen

Künstliche Intelligenz

Nvidia investiert 1 Milliarde US-Dollar in Nokia für Netzwerk-KI und 6G-Upgrade


Nvidia drückt Künstliche Intelligenz (KI) stärker in die Netzwerkinfrastruktur. Dazu ist der Chipkonzern eine strategische Partnerschaft mit Nokia eingegangen, um das Telekommunikationsunternehmen mit KI-Systemen für Funknetzwerke auszustatten. Gleichzeitig steigt Nvidia bei Nokia ein und übernimmt 166 Millionen Aktien im Gesamtwert von knapp einer Milliarde US-Dollar. Die Börse ist begeistert. Der Aktienkurs Nokias zieht um mehr als 20 Prozent an, Nvidias um knapp 5 Prozent.

Weiterlesen nach der Anzeige

Nvidia bietet bereits seit einiger Zeit Systeme für das sogenannte AI-RAN (Artificial Intelligence Radio Access Network) an, die die Effizienz und Leistung von Funknetzwerken durch KI verbessern sollen. Das soll den Übergang vom aktuellen 5G-Netz zum kommenden 6G fördern. Nokia wird diese Chips und Systeme in sein Sortiment aufnehmen, während Nvidia Nokias Rechenzentrumsprodukte wie Switches für die eigene Infrastruktur einsetzen will.

„AI-RAN, basierend auf Nvidias CUDA und KI, wird die Telekommunikation revolutionieren“, erklärt Nvidia-Gründer und -Chef Jensen Huang laut Mitteilung des Unternehmens. „Gemeinsam mit Nokia und dem amerikanischen Telekommunikations-Ökosystem treiben wir diese Revolution voran und ermöglichen Betreibern den Aufbau intelligenter, adaptiver Netzwerke, die die nächste Generation globaler Konnektivität prägen werden.“

„Der nächste Sprung in der Telekommunikation ist nicht nur von 5G auf 6G – es geht um eine grundlegende Neugestaltung des Netzwerks, um KI-gestützte Konnektivität zu ermöglichen, die Intelligenz vom Rechenzentrum bis zum Rand verarbeiten kann“, fügt Nokia-CEO Justin Hotard hinzu. „Unsere Partnerschaft mit Nvidia und deren Investition in Nokia werden die AI-RAN-Innovation beschleunigen und ein KI-Rechenzentrum für jedermann erschwinglich machen.“

Die AI-RAN-Systeme Nvidias sind praktisch KI-fähige Computer, die gleichzeitig kabellos kommunizieren, KI-Prozesse verarbeiten und mobilen Funkverkehr leiten können sollen. Wie beim sogenannten Edge-Computing soll die Datenverarbeitung näher an der Quelle statt in der Cloud durchgeführt werden, um Wartezeiten und Latenzen zu reduzieren. Laut Nvidia ist dies insbesondere für das kommende 6G-Netz wichtig, das sich zudem durch KI-Anwendungen auszeichnen soll. T-Mobile USA wird diese Technik nächstes Jahr testen, aber Nokia erwartet Massenproduktion und -einsatz für 2027.

Weiterlesen nach der Anzeige

Lesen Sie auch

Durch die Milliardeninvestition übernimmt Nvidia 2,9 Prozent der Unternehmensanteile Nokias, berichtet Bloomberg. Dies entzückt die Anleger. Nokias Aktie ist sofort um fast 23 Prozent gesprungen, der größte Satz seit 2013. Nachbörslich ging es um weitere 3 Prozent nach oben. Nvidias Aktienkurs reagierte verhaltener. Dieses Papier gewann gestern knapp 5 Prozent an Wert, wobei der Kurs nach Börsenschluss um noch einmal rund 1,5 Prozent angestiegen ist.


(fds)



Source link

Weiterlesen

Beliebt